210317
[상속(***)]
-기본클래스(부모클래스, super클래스)의 속성과 메소드를 물려받고 기존의 기능을 수정하거나 새로운 기능을 추가(확장)하는 것
-형식
class 부모클래스명 {
...
}
class 자식클래스명 extends 부모클래스명 {
...
}
-부모의 private멤버는 자식클래스에서 접근할 수 없다.
부모의 protected멤버는 다른 패키지에서 접근할 수 없지만 자식클래스에서는 접근할 수 있다.
-접근지정자
private : 자신의 클래스에서만 접근 가능
default : 같은 패키지내에서 접근 가능
protected : 같은 패키지 또는 패키지가 달라도 자식클래스에서 접근 가능
public : 어디서든 접근 가능
실무에서는 보통 파일 하나당 클래스 하나 만듦. 파일 하나에 클래스 여러개 만드는 경우는 거의 없음.
[오버라이딩(***)]
-부모클래스의 메소드를 자식클래스에서 수정하고자 할 때 오버라이딩 한다.
-만드는 방법
부모클래스의 메소드명, 파라미터 갯수, 타입 모두 일치해야 한다.
-오버라이딩 할 때 접근지정자는 부모의 접근지정자보다 범위가 좁아지면 안된다.
예)
class AA {
public void show() {}
}
class BB extend AA {
public void show() {} //오버라이딩
public void show(String a) {} //오버로딩
}
[클래스 간의 형변환]
-클래스 간에는 형변환이 안되지만 상속관계에서는 형변환이 가능하다.
-부모클래스는 자식클래스를 참조할 수 있지만 자식클래스에서 추가된 멤버는 참조할 수 없다.
단 오버라이딩 된 메소드는 참조가 가능하다.
-자식클래스에서 부모클래스를 참조할 수는 있지만 이떄는 강제형변환을 해야 한다.