자바 상속
상속은 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 |