티스토리 뷰

★ 클래스의 다형성 ( polymorphism)

 

다형성 ( polymorphism)

- 다형성이란 말 그대로 , 여러 형태를 가질 수 있는 속성, 능력

 

☆ 클래스의 다형성

- 한 타입의 참조 변수로 여러 타입의 객체(인스턴스)를 참조할 수 있도록 구현함.

 


상위 클래스 타입의 참조 변수로 하위 클래스의 인스턴스를 참조할 수 있다. 

 

Animal 클래스를 생성했다.

 

1. string 타입의 name 변수를 만들었다.

2. sing 참조변수는 name+ "sing( ) 호출" 을 출력한다.


Whale 클래스를 생성했다.

 

1. Whale 클래스는 Animal 클래스를 상속받도록 extends를 입력했다.

2. "첨벙첨벙" 을 출력하는 swim 메서드를  만들었다. 

 


main 클래스를 생성했다.

1. Animal 타입의 참조변수 animal로 whale 타입의 인스턴스를 생성했다. 

2. name은 "Animal 타입으로" 문자열을 갖고있다.

3. Animal 클래스가 가지고 있는 sing 메서드를 출력한다.


그럼, " whale 타입으로 sing ( ) 호출 " 출력이 가능할까?

 

1. Whale 타입의 참조변수 whale로 whale 타입의 인스턴스를 생성했다.

2. name은 "Whale 타입으로" 문자열을 갖고있다.

3. sing 메서드를 출력한다. 

 

Whale은 Animal의 하위 클래스이기 때문에 sing 메서드 활용이 가능하다.

 


1. animal은 swim 메서드 활용이 불가능하다.

   왜냐고? 상위 타입의 참조변수로는 하위 타입의 멤버 사용 불가하기 때문이다.

 

2. whale은 당연히 swim 메서드 활용이 가능하다.

 

참조변수가 사용할 수 있는 멤버의 개수 <=(같거나 작다) 참조하고 있는 인스턴스 멤버의 개수

 

오늘의 교훈

참조 변수가 가진 타입에 따라 참조할 수 있는 멤버의 개수가 달라진다.