(JAVA)객체의 상속

강병우·2023년 10월 23일

상속을 사용하여 중복을 제거할 수 있다.

상속을 사용하지 않을 때

public class Main {
    public static void main(String[] args) {
        오리 a오리 = new 오리();
        a오리.날다();
        // 출력 : 오리가 날개로 날아갑니다.

        흰오리 a흰오리 = new 흰오리();
        a흰오리.날다();
        // 출력 : 오리가 날개로 날아갑니다.
    }
}

class 오리 {
    void 날다() {
        System.out.println("오리가 날개로 날아갑니다.");
    }
}
class 흰오리 {
    void 날다() {
        System.out.println("오리가 날개로 날아갑니다.");
    }
}

상속을 사용할 때

public class Main {
    public static void main(String[] args) {
        오리 a오리 = new 오리();
        a오리.날다();
        // 출력 : 오리가 날개로 날아갑니다.

        흰오리 a흰오리 = new 흰오리();
        a흰오리.날다();
        // 출력 : 오리가 날개로 날아갑니다.
    }
}

class 오리 {
    void 날다() {
        System.out.println("오리가 날개로 날아갑니다.");
    }
}
class 흰오리 extends 오리 {
}

생성자를 사용해 클래스의 변수를 초기화할 수 있다.

public class Main {
    public static void main(String[] args) {
        로봇오리 a로봇오리 = new 로봇오리();
        a로봇오리.날다();
        // 출력 : 저는 못 날아요 ㅠㅠ
        a로봇오리.수영하다();
        // 출력 : 물갈퀴로 수영합니다.
    }
}

class 오리 {
    int fly = 1;
    int swim = 1;

    void 날다() {
        if (fly == 1) {
            System.out.println("오리가 날개로 날아갑니다.");
        } else {
            System.out.println("저는 못 날아요 ㅠㅠ");
        }
    }

    void 수영하다() {
        if (swim == 1) {
            System.out.println("물갈퀴로 수영합니다.");
        } else {
            System.out.println("물에 둥둥 뜹니다.");
        }
    }
}

class 고무오리 extends 오리 {
    고무오리() {
        fly = 0;
        swim = 0;
    }
}

class 로봇오리 extends 오리 {
    로봇오리() {
        fly = 0;
        swim = 1;
    }
}

인스턴스 변수를 통해서 상태를 기억할 수 있다.

public class Main {
    public static void main(String[] args) {
        전사 a전사 = new 전사();

        a전사.공격("브라이언", "칼");
        // 브라이언(이)가 칼(으)로 공격합니다.

        a전사.재공격();
        // 브라이언(이)가 칼(으)로 공격합니다.

        a전사.공격("필립", "창");
        // 필립(이)가 창(으)로 공격합니다.

        a전사.공격("마크", "지팡이");
        // 마크(이)가 지팡이(으)로 공격합니다.

        a전사.재공격();
        // 마크(이)가 지팡이(으)로 공격합니다.

        a전사.재공격();
        // 마크(이)가 지팡이(으)로 공격합니다.
    }
}

class 전사 {
    String lastName;
    String lastWeapon;
    void 공격(String name,String weapon) {
        lastName = name;
        lastWeapon = weapon;
        System.out.println(lastName + "(이)가 " + lastWeapon + "(으)로 공격합니다.");
    }
    void 재공격() {
        공격(lastName, lastWeapon);
    }
}

0개의 댓글