본문 바로가기

Develop/JAVA

자바 상속

자바 상속

 

상속은 A는 B이다가 성립하면 확장이 옳바르게 가능합니다.

대신 B는 A다가 성립하면 안되겠죠..

 

아래 소스는

부모 클래스 Travel - 여행

자식 클래스 Excursion - 짧은 여행(소풍)

이므로 짧은 여행은 여행이다. -> 성립하죠?

여행은 짧은 여행이다.. -> 성립이 안합니다. 긴 여행, 외국 여행 등

 

자바에서 상위 클래스는 좀 추상적이고 하위 클래스는 더 구체 적이죠~ ㅎ

 

그럼 이제 아래의 소스를 보면

class Travel {
	private String destination;

	// destination 을 private 로 선언하여 외부에서 직접 사용 못하게함.
	// 보면 알겠지만 매소드를 통해서 변수의 값을 저장하고 불러서 사용 할 수 있다.
	/*
	 * Excursion 클래스에서 super("천안"); 사용시 명시적으로 생성자를 정해준다. public Travel(String
	 * destination) { this.destination = destination; }
	 */
	public void setDestination(String destination) {
		this.destination = destination;
		// this. <- 은 같은 클래스의 맴버 변수를 선택한다.
	}

	public String getDestination() {
		return destination;
	}
}

// Excursion 클래스가 Travel 클래스를 상속 받았다.
// 이때, 부모 클래스로부터 public, protected 로 선언된 멤버들을 상속받아 사용가능하다.
class Excursion extends Travel {
	private String name;

	public Excursion(String name) {
		// super("천안");
		// super()를 이용한 상위 클래스의 생성자 호출
		// 부모 클래스의 생성자를 명시적으로 적어주지 않는다면 컴파일러는 상위 클래스의 디폴트 생성자를 호출한다.
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

public class extendsEx {
	public static void main(String args[]) {
		Excursion exc = new Excursion("유치원 소풍");
		exc.setDestination("한강");
		// Excursion 클래스는 부모 클래스를 상속 받았기 때문에 Travel 클래스의 특성도 불러와 사용 할 수 있다.
		System.out.println(exc.getName() + "의 목적지는 " + exc.getDestination()
				+ " 입니다.");
	}
}
 

 

 

추가로,

super 는 상위 클래스의 맴버 변수나 메서드에 접근할 때 사용한다.

 

this 는 자신의 맴버 변수나 메서드에 접근할 때 사용한다.

메서드 내부에서 맴버 변수와 동일한 이름의 식별자를 사용할 경우 this 지시자로 맴버 변수임을 컴파일에게 알릴수 있습니다.

'Develop > JAVA' 카테고리의 다른 글

자바 추상클래스  (0) 2011.12.05
자바 오버라이딩  (0) 2011.11.30
JAVA Array  (0) 2011.11.28
자바 객체지향의 특징  (0) 2011.11.23
JAVA feature  (0) 2011.11.23