다형성을 직접 사용해보기 위해 동물 소리를 출력하는 예시를 살펴보자.
부모 클래스 생성
public class Animal {
public void sound(){
System.out.println("동물 울음 소리");
}
}
자식 클래스 생성
public class Cat extends Animal{
@Override
public void sound(){
System.out.println("야옹");
}
}
public class Cow extends Animal{
@Override
public void sound(){
System.out.println("음메");
}
}
public class Dog extends Animal {
@Override
public void sound(){
System.out.println("멍멍");
}
}
위 세 개는 전부 따로따로 클래스를 만들었지만 코드에서는 하나로 합쳐서 넣었다.
Cat, Cow, Dog 전부 부모 클래스를 상속받았으며, 부모의 메서드를 Override하여서 새로운 메서드를 정의했다.
메인메서드
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
Cow cow = new Cow();
animalSound(dog);
animalSound(cat);
animalSound(cow);
}
public static void animalSound(Animal animal){
animal.sound();
}
}
Dog, Cat, Cow의 인스턴스를 생성 후 전부 animalSound라는 메서드에 파라미터로 넣어 실행시켰다.
animalSound 메서드를 보면 Animal 타입을 파라미터로 받고 있는데 Dog, Cat, Cow는 전부 Animal 타입을 상속받았기에 사용이 가능하다.
만약에 Dog, Cat, Cow에서 Animal에 있는 sound 메서드를 Override하지 않았다면 animal의 sound메서드가 실행되지만
전부 Override를 해줬기에 우선순위가 설정돼서 각자 인스턴스에 맞는 메서드가 출력되게 된다.
반응형
'JAVA 강의(인프런)' 카테고리의 다른 글
객체지향 설계 (2) | 2023.12.06 |
---|---|
abstract(추상) & interface(인터페이스) (1) | 2023.12.06 |
다형성(1) (2) | 2023.12.03 |
상속 (0) | 2023.12.03 |