java 학습일기 day7 - 상속및 생성자 오리문제

이건구·2023년 9월 6일
0

java학습일기

목록 보기
6/13
public class ExamDuck {
    public static void main(String[] args) {
        청둥오리 a청둥오리 = new 청둥오리();
        System.out.println("======청둥오리======");
        a청둥오리.날다();
        a청둥오리.헤엄치다();

        고무오리 a고무오리 = new 고무오리();
        System.out.println("======고무오리======");
        a고무오리.날다();
        a고무오리.헤엄치다();
    }
}
class 오리 {
    날개 날개 = new 오리날개();
    발 발 = new 오리발();
    void 날다() {
        날개.사용하다();
    }
    void 헤엄치다() {.수영하다();
    }
}
class 청둥오리 extends 오리 {
    청둥오리() {
        this.날개 = new 불사조날개();
        this.= new 불사조오리발();
    }
}
class 고무오리 extends 오리 {
    고무오리() {
        this.날개 = new 고무오리날개();
        this.= new 고무오리발();
    }
}
class 날개 {
    void 사용하다() {
        System.out.println("오리가 날개로 날아갑니다.");
    }
}
class 오리날개 extends 날개 {
}
class 고무오리날개 extends 날개 {
    void 사용하다() {
        System.out.println("날수없어요");
    }
}
class{
    void 수영하다() {
        System.out.println("오리가 오리발로 헤엄칩니다");
    }
}
class 오리발 extends{
}
class 고무오리발 extends{
    void 수영하다() {
        System.out.println("오리가 오리가 물에 둥둥 떠갑니다");
    }
}

위 코드는 청둥오리객체와 고무오리객체등 여러가지 오리객체를 만들어서 기능을 수행하게하는 코드이다.

각 종류별로 오리객체마다 클래스를만들어주고, 기본적인 오리의 속성을 갖도록 상속을해준다.

그리고 기능도 날개, 발 같이 이름을 나누어서 클래스를만든다.

날개에도 여러가지 가능을 만들때마다 클래스를 새로 만들어서 기능의 기본이되는 날개와 발을 상속받는다.

이코드에선 오리날개, 오리날개의 파생 고무오리날개, 오리발, 오리발의 파생인 고무오리발 네개를 만들었다.

그리고 기본이되는 날개, 발에는 날개를 사용하는 메서드 사용하다() 와 발을 사용하는 메서드 수영하다()를 만든다.

파생된 날개와 발에는 각각의 기능을 오버라이딩(재정의)해준다.

이제 준비가 다 되었다.

오리 클래스에 날개타입의 객체하나를 만들고 (위코드에선 그냥 변수명을 날개라고했다)

이 작업이 가능한 이유는 날개 클래스를 따로 만들어뒀기 때문이다.

같은 작업을 발도 해준다.

메인함수에서 실행될 메서드들을 만들어준다.

날다 메서드와 헤엄치다 메서드를 만들어주고 각각 메서드가 실행되면 변수명.클래스에있는메서드

날개.사용하다(); 를 하게되면 날다 메서드가 실행되면 날개객체가 갖고있는 사용하다() 함수를 실행하게된다.

이제 메인함수에서 만들고싶은 오리객체를 만들고 기능을 실행하면 각각 메서드를 찾아간다.

0개의 댓글