오버라이딩overriding이란 부모가 가진 메서드와 똑같은 모양의 메서드를 자식이 가지는 것을 말한다. 부모가 물려준 메서드를 자식 클래스에서 재정의해 사용하는 것이 오버라이딩.
package javastudy;
public class Van extends Car {
public void run() {
super.run();
System.out.printIn("Van의 run 메서드");
}
}
// Car의 run 메서드
// Van의 run 메서드
자식 클래스에서 run 메서드를 호출하면 자식이 가진 run 메서드만 호출된다. 이때 super 키워드는 자식이 부모의 메서드 나 필드를 사용할 때도 쓸 수 있다.
형변환은 두 가지만 생각하면 된다.
1. 묵시적(암묵적) 형변환 : 더 큰 그릇에 작은 그릇의 값을 담는 경우 → 컴파일러는 오류를 발생시키지 않고, 형을 바꿔준다.
2. 명시적 형변환 : 작은 그릇에 큰 그릇의 값을 담는 경우 → 오류 발생
package javastudy;
public class VanExam {
public static void main(String[] args) {
Car c = new Van();
c.run();
c.ppangppang(); // 부모 타입을 가리키고 있어서 사용할 수 없다
}
}
컴파일러 입장에서 c는 Car형이기 때문에 그보다 작은 Van형이 가리킬 수는 없다. Car는 Van보다 상위 개념이다.
Van van = (Van)c
이렇게 강제로 형변환을 해준다...형변환으로 객체가 가진 모든 부분을 사용한다.