강의로 돌아가기
Ryu0n

너무 잘가르쳐주시네요..ㅠㅠ

코드에서 보면 자식타입의 객체(suv, truck, bus)를 fill메소드의 매개변수(car)로 받아들여 부모타입(Car)으로 묵시적 형변환이 되는것이 맞죠?

그럼 만약에 반대로 부모타입의 객체를 자식타입으로 받아들여서 명시적 형변환하여 활용하는 경우도 있나요?

작성중인 코드―Car.java
1
2
3
public class Car{
    public int gas;
}
작성중인 코드―Suv.java
1
2
public class Suv extends Car{
}
작성중인 코드―Truck.java
1
2
public class Truck extends Car{
}
작성중인 코드―Bus.java
1
2
public class Bus extends Car{
}
작성중인 코드―GasStation.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class GasStation{
    public static void main(String[]args){
        GasStation gasStation = new GasStation(); //gasStation인스턴스 생성

    Suv suv = new Suv(); //suv 인스턴스 생성
        Truck truck = new Truck(); //truck 인스턴스 생성
        Bus bus = new Bus(); //bus 인스턴스 생성

        //gasStation에서 suv에 기름을 넣습니다.
        gasStation.fill(suv);

        //gasStation에서 truck에 기름을 넣습니다.
        gasStation.fill(truck);

        //gasStation에서 bus에 기름을 넣습니다.
        gasStation.fill(bus);

    }

//  public void fill(Suv suv){
//      System.out.println("Suv에 기름을 넣습니다.");
//      suv.gas += 10;
//      System.out.println("기름이 "+suv.gas+"리터 들어있습니다.");
//  }

//  public void fill(Truck truck){
//      System.out.println("Truck에 기름을 넣습니다.");
//      truck.gas += 10;
//      System.out.println("기름이 "+truck.gas+"리터 들어있습니다.");
//  }

//  public void fill(Bus bus){
//      System.out.println("Bus에 기름을 넣습니다.");
//      bus.gas += 10;
//      System.out.println("기름이 "+bus.gas+"리터 들어있습니다.");
//  }

    public void fill(Car car){
        //참고. car.getClass().getName()은 car오브젝트가 실제로 어떤 클래스인지를 알려줍니다.
        System.out.println(car.getClass().getName()+"에 기름을 넣습니다.");

        car.gas += 10;
        System.out.println("기름이 "+car.gas+"리터 들어있습니다.");
    }
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.