13. 다형성이란(Polymorphism)?
자바에서 데이터는 자료형을 통해 객체로 생성될 수 있습니다. 이러한 객체는 기본적으로는 한가지 자료형에 종속되는데요. 하지만 객체지향 프로그래밍을 추구하는 자바에서는 부모 클래스를 상속하거나 인터페이스를 상속받으면 자기 자신만을 자료형으로 하는 게 아니라 부모 클래스나 인터페이스를 자료형으로 하여 객체를 상속할 수 있습니다. 이러한 원리로 인해 자바 내의 모든 reference type의 객체들은 최상위 클래스인 Object를 자료형으로 하여 선언할 수 있는 것입니다.
자바에선 이렇게 하나의 객체가 여러 자료형으로 참조하여 객체를 생성할 수 있는 것을 다형성(Polymorphism)이라고 합니다.
부모 클래스의 선언
public abstract class Animal {
protected int age;
abstract void cries();
}
인터페이스의 선언
public interface Teeth {
void bite();
void scratch();
}
자식클래스의 상속
public class Dog extends Animal implements Teeth{
// 추상메소드
@Override
void cries() {
System.out.println(this.getClass().getName()+"는 멍멍 하고 울어요!");
}
// 인터페이스
@Override
public void bite() {
System.out.println("멍멍이가 한입 물기를 시전하였다.");
}
@Override
public void scratch() {
System.out.println("멍멍이가 날카로운 이빨로 할퀴를 시전하였다.");
}
}
다형성 테스트
public class PolymorphismTest {
public static void main(String[] args) {
// 클래스 Dog는 Animal을 상속받고, Teeth 인터페이스도 상속받았기에
// 다음과 같이 세가지 자료형으로 선언 가능하며,
// 이것은 다형성(Polymorphism)으로 인해 여러 타입의 자료형으로써 선언될 수 있기 때문!
Animal a1 = new Dog();
Dog d1 = new Dog();
Teeth t1 = new Dog();
// 이러한 성질을 다형성이라고 일컫는다.
}
}
'프로그래밍 언어 기초 > JAVA' 카테고리의 다른 글
Chapter 14. 예외(Exception) 처리 (0) | 2022.12.19 |
---|---|
Chapter 12. 제네릭(Generic) (0) | 2022.12.18 |
Chapter 11. 인터페이스(Interface) (0) | 2022.12.18 |
Chapter 10. 추상클래스(Abstract class) (0) | 2022.12.18 |
Chapter 9. 객체지향 프로그래밍(OOP, Object-Oriented Programming) (0) | 2022.12.18 |