객체 지향 프로그래밍(Object Oriented Programming)5 - 다형성(Polymorphism)

2021. 10. 30. 20:36Java

다형성 

하나의 객체가 많은 타입을 가질 수 있는 성질

상속 관계에 있을 때, 조상 클래스의 타입으로 자식 클래스를 레퍼런스 할 수 있다.

 

public class Animal{
	void cry(){
    	System.out.print("우에에에엥");
    }
}

class Tiger extends Animal{
	//cry를 오버라이딩 하였다
	@Override
	void cry(){
    	System.out.println("어흥");
    }
    void hunt(){
    	System.out.print("먹잇감을 잡는다");
    }
}

class Tiger extends Dog{
	//cry를 오버라이딩 하였다
    @Override
    void cry(){
    	System.out.println("멍멍");
    }
    
    void catch(){
    	System.out.print("공을 잡는다");
    }
}

호랑이는 동물이다 O

개는 동물이다 O

동물은 호랑이다, 동물은 개다 X

 

//다형성이 없다면 - 각각 배열을 만드러야 한다 
void noPoly(){
	Animal[] animals = new Animal[5];
    animals[0] = new Animal();
    
    Tiger[] tigers = new Tiger[5];
    tigers[0] = new Tiger();
   
   Dog[] dogs = new Dog[5];
    dogs[0] = new Dog();
}



//다형성이 있다면 - 같은 타입의 데이터로 묶을 수 있다
void yesPoly(){
	Animal[] animals = new Animal[5];
    animals[0] = new Animal();
  	animals[1] = new Tiger();
    animals[2] = new Dog();
}

출처

https://reakwon.tistory.com/48