다형성(Polymorphism)
1. 오버로딩(Overloading)
매개변수의 이름 또는 타입을 다르게 설정하면 같은 이름의 메소드를 선언할 수 있다.
2. 오버라이딩(Overriding)
부모의 메소드를 상속받은 후 자식 클래스에서 재정의하는 것.
---------------------------------------------------------------------------------
1. 클래스는 타입이다.
2. 모든 자식은 부모타입이다.
Casting
up casting : 자식 값을 부모 타입으로 형변환
부모타입 객체명 = new 자식 생성자();
down casting : up casting된 객체를 자식 타입으로 형변환
자식타입 객체명 = up casting된 객체;
※ 부모 값을 자식 타입으로 형변환 시 오류
자식타입 객체명 = new 부모 생성자();
Casting을 사용하는 이유
모든 자식 값을 전달 받기 위해서는 동일한 타입의 저장공간으로 받아야 한다.
하지만 자식끼리는 서로 타입이 다르기 때문에 한 번에 전달받을 수가 없다.
이 때 up casting을 사용하면, 모든 자식이 부모 타입이므로 하나의 저장공간에 모든 자식을 받을 수 있게 된다.
만약 up casting으로 자식 값을 전달 받았다면, 자식에서 새롭게 구현한 기능들을 사용할 수 없기 때문에
down casting을 통해서 복구하고 사용한다.
객체 간 타입 비교
instanceof
a instanceof A : 참 또는 거짓, 둘 중 하나의 값
- a가 A타입이면 true
- a가 A타입이 아니면 false
'JAVA' 카테고리의 다른 글
[JAVA] 예외처리, API (0) | 2021.11.20 |
---|---|
[JAVA] 추상 클래스, 인터페이스, 내부 클래스, 익명 클래스 (0) | 2021.11.20 |
[JAVA] 상속, 오버라이딩 (0) | 2021.10.14 |
[JAVA] 생성자와 은닉성 (0) | 2021.10.09 |
[JAVA] 클래스와 this (0) | 2021.10.07 |