관리 메뉴

CASSIE'S BLOG

33강 다형성 본문

PROGRAMMING/슈퍼코딩 강의 정리

33강 다형성

ITSCASSIE1107 2023. 12. 13. 17:24
반응형

 
final이 뭐더라.. 

누가 내머리에 똥쌌어
= 어떤 동물이 범인인지 찾는 동화

동물이 똥 싸는 행위는 같을 수 있지만 똥은 다르거든? 동물마다?

타입을 따라가는게 아니라 객체를 따라간다고 함
Fish fishchild = new Fishchild(“동해“, true);
fishchild.eat(“크릴새우”);


여기서 타입은 Fish지만 FishChild의
메소드를 따라간다.

다형성이란?
하나의 타입이나 메소드가 여러 타입이나 메소드들을 가지거나 실행하는 능력이다.

자식 클래스가 부모 클래스를 상속받고 메소드를 override하면 자식 클래스가 다른 메소드를 가질 수 있는거다.

Test 클래스에 main함수에 static으로 메소드 올리면 이게 가능함

public static void feed (Animal animal, String food){
    animal.eat(food);
}


접근제어자 뒤에 final 키워드 넣으면 된다고함. 

 

package exercise.chapter_33;

public final class Animal {
    // 속성
    protected String gender;

    // 행위
    public void eat(String food){
        System.out.printf("동물이 %s 을 먹습니다.\n",food);
    }
    public void sleep(){
        System.out.println("동물이 잠을 자고 있습니다.");
    }
}

 

 

타입은 Animal이지만 각각 인스턴스는 Bird, Fish 이므로 
eat 메소드가 Bird의 eat, Fish의 eat 메소드 이렇게 실행된다.

 

반응형