레이블이 instanceof인 게시물을 표시합니다. 모든 게시물 표시
레이블이 instanceof인 게시물을 표시합니다. 모든 게시물 표시

2016년 8월 2일 화요일

10DAY / SE / Polymorphism


http://www.javatpoint.com
  • Polymorphism(다형성)

  "One Interface, Multiple Implements"
 하나의 메세지 방식으로 다양한 객체들이 각자의 방식으로 동작하는 성질

www.c-sharpcorner.com
  • 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
   

    http://www.cs.utexas.edu
  • Object casting 

부모 타입의 변수로 자식객체 참조시에는 부모로부터
상속받은 멤버(변수,메서드)와 오버라이딩된 메서드는 바로 접근 가능하다

하지만 자식의 독자적인 멤버(변수,메서드)는 별도의 절차가 필요하다 
부모 타입의 변수로 참조되므로 변수를 자식타입으로 형변환(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
다형성 : 부모 타입의 변수에 자식객체 참조 가능