<aside> 💡 키워드
</aside>
<aside> 💡 세부내용
</aside>
한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것
상위 클래스 타입의 참조변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 만든 것
상위클래스 타입으로 정의 했으므로 상위클래스 타입의 멤버만 사용 가능 ( 단, 오버라이딩 된 메서드 제외 )
class Person{
void eat(){
System.out.println("사람이 밥을 먹는다");
}
}
class Student extends Person{
@Override
void eat(){
System.out.println("학생이 밥을 먹는다");
}
void study(){
System.out.println("학생이 공부를 한다");
}
}
/*======================================================*/
public class Test{
public static void main(String[] args){
Student student1 = new Student(); //다형성(객체자신의타입)
student1.eat(); //"학생이 밥을 먹는다"
student1.study(); //"학생이 공부를 한다"
Person student2 = new Student(); //다형성(상위클래스타입)
student2.eat(); //"학생이 밥을 먹는다"(오버라이딩된 메서드 사용)
studnet2.study(); //오류(Person타입이므로 Person의 메서드만 사용가능)
}