본문 바로가기

Dev/[Java]

[JAVA] 4. Polymorphism 다형성

반응형

 

 

Poly(다양한) + morphism(변형 + 변신)

: 말그대로 다양하게 변형한다..

:One Interface, Multiple Implementation

 

Employee e = new Employee(); (추상 클래스이므로 에러)

 

Employee mgr = new Manager();

Employee clerk = new MereClerk();

 

 

Homogeneous Collection

 

Heterogeneous Collection : 다른 클래스의 객체로 이루어진 집합

Employee[] emps = new Employee[3];

emps[0] = new Manager();

emps[1] = new MereClerk();

emps[2] = new MereClerk();

 

다형성!

 

위처럼 했을 때, 부모와 자식에 동일한 메서드있을경우(오버라이딩)

 

자식 거가 호출됨

 

 

instance of :부모 reference 로 입력 받은 객체가 실제로 어떤 객체인지 판별하기 위해 사용

 

A instanceof B

A가 B의 자식이거나 같은 class 타입이면 true 
 A가 B의 부모이면 false 
 부모/자식 관계에 속하지 않는 것끼리 instanceof 하면 컴파일에러남

public double getTax( Employee e ) {
	if ( e instanceof Manager )
    …. 
}

 

 

object class => 모든 클래스의 부모클래스. extends가 안 쓰인 클래스는 다 object class가 extends되어있다고 생각하면된다.

 

Object class 의 대표적 메소드들,

1) equals 

-> ref.변수를 ‘==’ 연산자로 비교한다는 것은, 주소 값을 비교하는 것이다.
-> equals() 의 내용은 비교되는 두 reference의 값을 ‘==‘ 연산자로 비교한다.
-> 주소비교가 아닌 객체 내용을 비교하려는 경우에는 equals() 를 override 한다.

 

2) toString() 
-> 객체를 String 으로 변환한다.
-> String Concatenation시 사용된다.
-> toString() 내용은 ‘클래스이름@hashcode값’ 이다.
-> 필요하면 적절하게 override하여 사용한다.
-> Primitive 타입인 경우 String으로 변환하기 위해, Wrapper 클래스의 toString()을 이용한다.

 

tostring 을 오버라이딩 해서 쓸 수 있다.

 

반응형