상속 : 부모의 재산을 물려받는다.
객체를 여러가지 모양으로 표현할 수 있는 특성을 "다형성" 이라 한다.
public class Student extends Person{ }
//Student 클래스는 person 클래스를 상속받았다.
class A{}
class B extends A{
void add(){} //자식 클래스에서 add메서드 추가
}
B b = new B();
A a = (A) b;
a.add(); //error 부모클래스 타입을
//바라보므로 추가된 메서드나 필드 사용불가
class A{}
class B extends A{
}
A a1 = new A(); //부모타입 A 클래스를 바라보면 A생성자로 객체 생성
B b1 = (B) a1; // B타입으로 다운 캐스팅시, 에러발생
A a2 = new B(); // 부모타입 A클래스를 바라보며 B생성자로 객체 생성
B b2 = (B) a2; // B 타입으로 다운 캐스팅가능
if(b instanceof A){ //A클래스를 상속받는 B클래스생성자로 생성된 인스턴스 b가 A타입
A a = (A) b; //형변환이 가능하면 true 리턴, 불가능하면 false 리턴
// 예제에서는 true가 리턴 되므로 업캐스팅 실행
}