http://www.javatpoint.com |
- Polymorphism(다형성)
"One Interface, Multiple Implements"
하나의 메세지 방식으로 다양한 객체들이 각자의 방식으로 동작하는 성질
- Polymorphism 적용 장점
: 사용자 측에서는 하나의 메세지 방식만 알면 다양한 구현체들을 실행할 수 있다
ex) 재생버튼 - Mp3플레이어, 동영상플레이어 ,
LP플레이어, 이클립스 등..
- Polymorphism 적용원리
ex)
1
2
3
4
5
6
|
class Animal{
}
class Person extends Animal{
}
Animal a = new Person();
| cs |
만약 상속관계라면 compile error
ex)
Car c = new Person(); compile error
| cs |
부모 타입의 변수로 자식객체 참조시에는 부모로부터
상속받은 멤버(변수,메서드)와 오버라이딩된 메서드는 바로 접근 가능하다
하지만 자식의 독자적인 멤버(변수,메서드)는 별도의 절차가 필요하다
부모 타입의 변수로 참조되므로 변수를 자식타입으로 형변환(Casting)하는 절차가 필요하다
ex)
1
2
3
|
Animal a = new Person();
a.study(); compile error
((Person)a).study(); Object casting
| cs |
http://www.java67.com |
- instanceof 연산자
ex) 객체 타입을 비교하는 연산자 is a 관계가 성립되면 true를 반환한다
1
2
3
4
5
6
|
class Animal{ }
class Person extends Animal{ }
Person p = new Person();
System.out.println(p instanceof Person); true
System.out.println(p instanceof Animal); true
-> is a 관계 성립되므로 true
| cs |
- java.lang.Object
자바로 구성된 모든 클래스의 부모클래스이다(super class)
상속하지 않는 클래스는 extends Object 자동으로 처리된다
모든 자바 객체 ->Object에 정의된 멤버를 상속받게 된다
모든 자바 객체 -> java.lang.Object 타입으로 참조될 수 있다
ex)
Object o1 = new Dog();
Object o2 = new Airplane();
| cs |