## Practice 1 : 클래스 상속 예제 1

<details>
<summary>문제 설명</summary>

### **[문제]** 조상 클래스 뽑아내기

### **[설명]**

다음과 같은 클래스들이 있다. <br>

```java
class Marine {
	int x, y;
	void move(int x, int y) { /* 지정된 위치로 이동 */ }
	void stop() { /* 현재 위치에 정지 */ }

	void stimPack() { /* 스팀팩을 사용한다. */ }
}

class Tank {
	int x, y;
	void move(int x, int y) { /* 지정된 위치로 이동 */ }
	void stop() { /* 현재 위치에 정지 */ }

	void changeMode() { /* 공격모드를 변환한다. */ }
}

class Dropship {
	int x, y;
	void move(int x, int y) { /* 지정된 위치로 이동 */ }
	void stop() { /* 현재 위치에 정지 */ }

	void load() { /* 선택된 대상을 태운다. */ }
	void unload() { /* 선택된 대상을 내린다. */ }
}

3개의 클래스에서 공통된 부분을 뽑아내어 조상 클래스 Unit를 만들어보자. <br> 그리고 조상 클래스를 상속받아 각 클래스를 만들어보자. <br> Test seems Correct가 출력되는 경우 정답이다. <br>

<span style="color:red"> HINT : 공통된 부분만 빼내면 된다. </span>

</details>

<br></br>

Practice 2 : 클래스 상속 예제 2

<details> <summary>문제 설명</summary>

[문제] 상속하고 또 상속하고

[설명]

상속을 두 번 이용하는 예제이다. <br> 상속이 되는 구조는 다음과 같다.

(조상) Vehicle -> Car -> SportsCar (자손)

Vehicle의 멤버변수는 speed이다. <br>

Car의 멤버변수는 brand, speed이다. <br> 여기서 speed는 Vehicle 클래스에서 상속받고, brand는 Car 클래스에서 선언한다. <br>

SportsCar의 멤버변수는 brand, speed, cost이다. <br> 여기서 brand와 speed는 Car 클래스에서 상속받고, cost는 SportsCar 클래스에서 선언한다. <br>

SportsCar의 멤버변수와 생성자를 작성해보자.

<span style="color:red"> HINT : 생성자에서 상속받은 클래스의 생성자를 super()를 이용하여 호출할 수 있다.</span> <br>

</details>

<br></br>

Practice 3 : 클래스 상속 + 포함 예제

<details> <summary>문제 설명</summary>

[문제] 상속도 하고! 포함도 하고!

[설명]

TO DO를 채워봅시다.

</details>

<br></br>

Practice 4 : 상속 + 다형성 실습 1

<details> <summary>문제 설명</summary>

[문제] 맥주가 마시고 싶어요

[설명]

조상 클래스가 될 Beer 클래스를 만들어봅시다

</details>

<br></br>

Practice 5 : 상속 + 다형성 실습 2

<details> <summary>문제 설명</summary>

[문제] 맥주가 마시고 싶어요

[설명]

Beer 클래스를 상속받을 두 클래스를 만들어봅시다

</details>

<br></br>

Practice 6 : 상속 + 다형성 실습 3

<details> <summary>문제 설명</summary>

[문제] 맥주가 마시고 싶어요

[설명]

매개변수의 다형성을 활용하여 하나의 메서드를 통해 서로 다른 맥주를 주문해보자

생성해야 할 인스터스의 정보는 다음과 같다.

인스턴스 타입 인스턴스 이름 type model ABV flavor
Hoegaarden h1 "밀맥주" "호가든" 6 "레몬"
Hoegaarden h2 "밀맥주" "호가든" 6 "일반"
Cass c "보리맥주" "카스" 6

작성해야 할 코드의 일부는 다음과 같다

public class BeerTest {
    public static void main(String[] args) {
        // TO DO

        order(h1);
        order(h2);
        order(c);
    }

    static void order( ? ) {
        if (b instanceof Hoegaarden) {
            // TO DO
        } else if (b instanceof Cass) {
            // TO DO
        }
    }
}

출력 결과물은 다음과 같다

호가든의 타입 : 밀맥주
호가든의 도수 : 6
호가든의 맛 : 레몬
레몬맛 호가든을 마십니다

호가든의 타입 : 밀맥주
호가든의 도수 : 6
호가든의 맛 : 일반
일반맛 호가든을 마십니다

카스의 타입 : 보리맥주
카스의 도수 : 6
카스을 마십니다

</details>