안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
http://blog.naver.com/rain483/220514481699
상속은 재사용 + 확장입니다.
객체 지향에서 상속은 분류도라고 할 수 있습니다.
객체 지향에서 상속은 상위클래스의 특성을 하위클래서에서 상속(특성상속)하고 거기에 더해
필요한 특성을 추가, 즉 확장하여 사용할 수 있다는 의미죠.
상속관계에서 반드시 만족해야할 문장이 있어요.
바로 하위클래스는 상위클래스다 입니다.
그럼 상속의 강력함을 보여주는 예제를 보겠습니다.
예제1)
package inheritance01;
public class 동물 {
String myClass;
동물() {
myClass = "동물";
}
void showMe() {
System.out.println(myClass);
}
}
예제1)
package inheritance01;
public class 포유류 extends 동물 {
포유류() {
myClass = "포유류";
}
}
예제1)
package inheritance01;
public class 조류 extends 동물 {
조류() {
myClass = "조류";
}
}
예제1)
package inheritance01;
public class 고래 extends 포유류 {
고래() {
myClass = "고래";
}
}
예제1)
package inheritance01;
public class 박쥐 extends 포유류 {
박쥐() {
myClass = "박쥐";
}
}
예제1)
package inheritance01;
public class 참새 extends 조류 {
참새() {
myClass = "참새";
}
}
예제1)
package inheritance01;
public class 펭귄 extends 조류 {
펭귄() {
myClass = "펭귄";
}
}
예제1)
package inheritance01;
public class Driver01 {
public static void main(String[] args) {
동물 animal = new 동물();
포유류 mammalia = new 포유류();
조류 bird = new 조류();
고래 whale = new 고래();
박쥐 bat = new 박쥐();
참새 sparrow = new 참새();
펭귄 penguin = new 펭귄();
animal.showMe();
mammalia.showMe();
bird.showMe();
whale.showMe();
bat.showMe();
sparrow.showMe();
penguin.showMe();
}
}
상속을 받아서 동물 클래스의 메서드를 하위 클래스들이 사용하죠?
이 것이 바로 상속의 강력함입니다.모든 하위 클래스에서 showMe() 메서드를 다시 작성하지 않고 상위 클래스의 showMe()메서드를 사용할 수 있죠.(재사용)
상속은 is a 관계를 만족해야 한다고 잘 못알고 계신 분들이 있는데요.
팽귄 is a 동물
팽귄은 한마리 동물이다. 맞는 것 같죠? 동물과 팽귄은 클래스죠? 근데 한 마리 동물은 클래스일까요?
아니죠 객체죠. 그럼 하위 클래스 is a 상위 클래스는 어떨까요?
하위 클래스는 하나의 상위 클래스이다?? 하위 클래스는 분류/집단이에요. 상위 클래스도 분류/집단이죠. 하지만 하나의 상위 클래스는 객체입니다.
정확한 표현은 is a kind of 입니다.
마이크로소프트 개발자 사이트인 MSDN에서도 상속을 표현하는 is a 를 더 명확히 표현하면 is a kind of라고 명시하고 있죠.
상속에서는 아래 세가지는 꼭 기억하셔야해요.
-객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것이다.
-객체 지향의 상속은 상위 클래스의 특성을 확장하는 것이다.
-객체 지향의 상속은 is a kind of 관계를 만족하는 것이다.
'자바' 카테고리의 다른 글
JAVA 자바 부모 생성자 호출 (0) | 2017.03.12 |
---|---|
JAVA 자바 클래스 상속 (0) | 2017.03.12 |
JAVA 자바 어노테이션 유지 정책과 런타임 시 어노테이션 정보 활용하기 (0) | 2017.03.12 |
JAVA 자바 어노테이션 타입의 정의와 적용, 어노테이션 적용 대상 (0) | 2017.03.12 |
JAVA 자바 Getter 와 Setter (0) | 2017.03.12 |