오늘의 할일😎
- "자바의 정석" 7장 다형성_2
더보기
다형성_1
2025.01.06 - [TIL] - 2024_01_06 TIL
2025.01.06 - [TIL] - 2024_01_06 TIL
다형성
instanceof 연산자
- 참조변수가 참조하고 있는 인스턴스의 실제타입을 알아보기 위한 연산자.
- 형변환 전에 반드시 확인!
//boolean type 반환
//A는 참조변수 B는 타입(클래스명)
A instanceof B
(true일때는)
A -> B 로 형 변환이 가능한 상태라는 것.
참조변수와 인스턴스 연결
- 멤버변수가 조상과 자손 클레스에 중복 정의된 경우 -> 참조변수의 타입에 맞는 클래스의 멤버변수 활용
- 메서드가 조상과 자손 클레스에 중복 정의된 경우 -> 실제 인스턴스의 메서드가 사용된다.
public class Test {
public static void main(String[] args) {
//p와c의 실제 인스턴스는 Child이다.
Parent p = new Child();
Child c = new Child();
//아래 p.method와 c.method는 각 클래스에 같은 이름의 중복 정의이기 때문에 실제 인스턴스가 가진 method를 호출.
//각각의 x는 중복정의된 인스턴스 변수이므로 각각의 타입에 맞는 클래스에 선언된 멤버변수가 사용된다.
System.out.println(p.x);
p.method();
System.out.println(c.x);
c.method();
}
}
class Parent{
int x =100;
void method(){
System.out.println("Parent");
}
}
class Child extends Parent{
int x = 200;
void method(){
System.out.println("Child");
}
}
매개변수의 다형성
- 참조형 매개변수는 자신과 같은 타입이거나 자손타입의 인스턴스를 넘겨줄 수 있다.
Tv,Computer,Audio -> extends Product
buy메서드 작성시 각각의 타입에 맞는 메서드를 3번 작성.
void buy(Tv t){...}
void buy(Computer c){...}
void buy(Audio a){...}
매개변수의 다형성을 이용해 3개의 물건의 공통조상인 Product를 활용하여
void buy(Product p){...}
위와같이 줄여서 활용가능하다(유지/보수↑)
- 공통조상인 Product를 이용해 자손타입(Tv,Computer,Audio)의 인스턴스를 넘겨준다.
객체 배열
- 다형성을 이용하여 조상타입의 참조변수를 이용하면 공통조상을 가진 객체들을 배열로 묶을 수 있다.
✍️ vector을 활용하면 배열 크기를 직접 조절하지 않고 동적으로 크기가 관리되는 객체배열을 생성할 수 있다.
vector 메서드는 (add,remove,isEmpty,get,size)활용가능
'TIL' 카테고리의 다른 글
2025_01_09 TIL (0) | 2025.01.09 |
---|---|
2025_01_08 TIL (0) | 2025.01.08 |
2025_01_06 TIL (0) | 2025.01.06 |
2025_01_03 TIL (1) | 2025.01.03 |
2025_01_02 TIL (0) | 2025.01.02 |