
: 부모와 자식관계에서 동일한 이름의 메소드가 있는 경우(매개변수까지 동일한 경우) 부모메소드가 가려지고(Hiding) 자식의 메소드로 재정의되는 현상(덮어쓰기가 되는 현상)
상속에서 static이 붙은 경우
// 상속에서 static이 붙은 경우
class C1{
static int x;
static int y;
}
// 클래스 변수도 상속됨
class C2 extends C1{
static String x;
}
public class InhEx06 {
public static void main(String[] args) {
C2.x = "알기쉽게 해설한 자바"; // ----> C2.x 접근가능함.
// C1 클래스에서 선언된 int x는 가려짐
C2.y = 20000; // ---> 상속받은 C1.y로 접근함.
C1.x = 30000; // C1.x로 int 형식, 상속이 아님.
System.out.println("C2.x : " + C2.x);
System.out.println("C2.y : " + C2.y);
System.out.println("C1.x : " + C1.x);
}
}
private으로 제한된 부모의 멤버필드는 자식에게 상속되지 않는다.
자식에게 같은 이름으로 선언할 수 있음. 재정의 가능
상속관계에서도 오버로딩이 존재함.
부모클래스
(1)public void md() {...} // 하이딩
(2)public void md(int a){...} // 오버로딩
자식클래스 extends 부모클래스
(3)public void md() {...} // 오버라이드
(4)public void md(String a){...} // 오버로딩 ---> 상속 관계에서도 오버로딩이 존재
ex) 부모 public void setA(int a){ ... }
자식 [defualt|protected|public] void setA(int a){....}
: 생성자 호출의 가장 마지막에 기본으로 숨겨져 있다고 생각해야함
this
this. 키워드 자기자신의 변수 : 나의 인스턴스
this() 호출문 : 나의 인스턴스 안의 기본생성자 호출
this([매개변수]) 호출문 : 나의 인스턴스 안의 해당 케이스의 기타 생성자 호출
super
super. 키워드 : 부모 인스턴스 --> 부모 안에서 사용불가, 무조건 자식에서, 순서 상관없음
super () 호출문 : 부모 인스턴스의 기본 생성자 호출( 자동으로 숨겨있다.)
super(매개변수...) 호출문 : 부모 인스턴스 안의 해당 케이스의 기타 생성자 호출(반드시 기술해야함)
자식의 생성자의 가장 처음에 기술해야함. 딱 한번만 호출 가능함.