클래스 형변환
부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다. 자식객체가 가지고 있는 메소드나 속성을 사용하고 싶다면 형변환 해야 한다.
형변환
public class Car{
public void run(){
System.out.println("Car의 run메소드");
}
}
public class Bus extends Car{
public void ppangppang(){
System.out.println("빵빵.");
}
}
상속관계란 is a 관계라고 말했었습니다. "Bus는 Car다." 라는 관계가 성립되는 것이죠.
현실에서도 우리는 버스를 가리키면서 차다. 라고 말하곤 합니다.
- 부모타입으로 자식객체를 참조할 수 있다.
- 부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다.
public class BusExam{
public static void main(String args[]){
Car car = new Bus();
car.run();
car.ppangppang(); // 컴파일 오류 발생
}
}
- ppangppang()메소드를 호출하고 싶다면 Bus타입의 참조변수로 참조해야 한다.
public class BusExam{
public static void main(String args[]){
Car car = new Bus();
car.run();
//car.ppangppang(); // 컴파일 오류 발생
Bus bus = (Bus)car; //부모타입을 자식타입으로 형변환
bus.run();
bus.ppangppang();
}
}
- 객체들 끼리도 형변환이 가능하다. 단 상속관계에 있었을 때만 가능하다.
- 부모타입으로 자식타입의 객체를 참조할 때는 묵시적으로 형변환이 일어난다.
- 부모타입의 객체를 자식타입으로 참조하게 할때는 명시적으로 형변환 해주어 한다. 단 이렇게 형변환 할때에는 부모가 참조하는 인스턴스가 형변환 하려는 자식타입일 때만 가능하다.
-
이 파트 들으면서 생긴 질문
JHKIMS
2019.12.27 13:26
0
-
처음부터 Bus bus = new Bus(); 라고 하면 되지 않나요?
민성준
2019.11.11 05:01
0
-
솔직히 이해안감
박용주
2019.2.8 12:48
1
-
가르키다(X) 가리키다(O)
김대희
2018.12.30 15:33
1
-
클래스 형변환(Car car=new Bus();)
김동현
2018.8.4 23:22
1
-
car(부모)가 bus(자식)보다 상위에 있지만 그릇은 bus가 더 크다고 생각합니다.
김호정
2018.7.26 16:16
1
-
부모 타입으로 자식 객체를 참조...
이상민
2018.7.24 16:15
0
-
오버라이딩된 부모클래스를 사용하고 싶을때는 어떻게 하나요?
letz
2018.6.15 21:29
1
-
큰 곳에서 작은 곳으로 가는데 왜 형변환을 해주나요
-
2018.6.2 21:26
1
-
부모와 자식에게 같은 이름의 메서드가 있을경우.
심승현
2018.1.10 17:17
1
-
부모 클래스를 자식 클래스로 인스턴트화하는 이유는 무엇인가요?
Park Hansu
2016.6.16 20:45
1
-
부모 메서드만 사용가능하다.
-
2016.5.11 22:23
1