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 을 오버라이딩 해서 쓸 수 있다.
'Dev > [Java]' 카테고리의 다른 글
[JAVA] 6. Collection (0) | 2021.01.20 |
---|---|
[JAVA] 5. 인터페이스, static, final, abstract (0) | 2021.01.20 |
[JAVA] 3. ObjectOrientedProgramming(OOP), 예외처리 (0) | 2021.01.19 |
[JAVA] 2. 데이터타입, 접근제한자, 제어문, 롬복 (0) | 2021.01.18 |
[JAVA] 1. 자바 기초(JDK, JRE 차이) (0) | 2021.01.18 |