9. 클래스 3 :상속
(1) 상속 예외
1)생성자
2) private
(2) 부모의 생성자를 호출 할 수 있다.
Super(….) – this(…)
단 주소만 다름
This 현재 자신의 주소 super 은 부모의 주소
Super.변수 또는 super.메서드() – this.변수 또는 메서드
Super도 참조 변수다
반드시 생성자 안에서만 호출 가능 일반 메서드 에서는 호출 불가능
이것은 this 도 마찬가지!
"반드시 첫줄에 작성"
(3) 생성자의 호출 순서
(4) 상속은 확장의 개념이다.
(5) 자바는 단일상속만을 지원한다.
부모는 반드시 가장 기본적인 것만 가지고 있어야 된다.
- 상속 설계 과제
(6) 부모 클래스와 자식 클래스의 참조 관계
- 서로 다른 클래스는 참조할 수 없다.
- 단, 부모 자식관계는 참조 할 수 있다.
- 단, 부모만 자식을 참조 할 수 있다.
- 단, 부모는 자신이 물려준 범위 내에서만 참조가 가능하다.
1) 인스턴스가 결정되지 않았을 때
O - > A, B
O(부모) A, B(자식)
A a1 = New A();
O a2 = new ?(); // 주소는 임시로 받음.
…
A a3 = (A)a2 ; //캐스팅으로 넘겨주기.
2) 여러 개의 자식 인스턴스를 배열로 관리하기 위해서
A a1 = new A();
B a1 = new B();
C a1 = new C();
D a1 = new D();
O o1[] = {a1, b1, c1, d1, new E()};
(7) 메서드의오버라이딩(Overriding)
메서드에서만 적용된다.
1) 재정의(부모로부터 상속받은 메서드를 고쳐서 사용)
2) 반드시 상속에서만 사용할 수 있는 문법
(8) 추상 클래스와 추상 메서드
1) 추상 클래스
- 추상메서드를 하나 이상 가지고 있는 경우
- abstract 키워드 사용
- 인스턴스를 생성할 수 없다. // 자식에게만 물러줄 수 있는 용도로만 쓰겠다.
2) 추상 메서드
- 내용은 없고 선언만 되어있는 메서드
Void a() {
}
Void a(); // 중괄호가 없는 건 쓸데없는 진입을 막겠다는 의미
// 혼란을 방지하기 위해서
- Abstract 키워드 사용
Abstract void a();
//추상메서드는 앞에 Abstract 라는 키워드를 사용한다.
- 반드시 오버라이딩을 해야 한다.//이걸 상속 받는 자식클래스는
(9) final : class, method, variable
1) 변수
Final inti=5;
I = 10;
Final int MAX_AGE = 100;
For(inti=0; i<MAX_AGE; i++) {
…
}
2) 메서드
Final void method(…) {
…
}
3) 클래스
Final class Classname{…}
(10) Object
'Java' 카테고리의 다른 글
[JAVA 정리] 11. Interface (0) | 2017.06.24 |
---|---|
[JAVA 정리] 10. Package (0) | 2017.06.24 |
[JAVA 정리] 8. 클래스2 (0) | 2017.06.24 |
[JAVA 정리] 7. Array 배열 (0) | 2017.06.24 |
[JAVA 정리] 6. 매서드 (0) | 2017.06.24 |