본문 바로가기

Java

up casting & override

반응형

상위 클래스를 하위클래스의 생성자로 생성하는 경우 묵시적으로 이루어짐.

하위 클래스의 타입은 상위 클래스의 타입으로 형변환 가능

-> 업캐스팅

but 역은 성립 안됨.

상위 클래스로 형변환 되면 하위 클래스의 메소드나 변수는 상위클래스의 메소드만 보임.

Customer vc = new VIPCustomer(); 한 경우에

vc에게는 Customer의 메소드만 보이지만

vc.calcPrice(1000); 실행시 실행되는것은 VIPCustomer의 calcPrice이다.

 

 

상위클래스의 메소드가 하위클래스에서 필요한 내용과 맞지 않는 경우 재정의 가능 ->오버라이딩.

오버로딩 -> 메소드 이름은 같은데 매개변수 포맷이 다른거.

@Override -> 컴파일러에게 오버라이드 된 메소드라는 것을 보여줌 이때 상위 클래스의 오버라이드 된 메소드와 포맷이 달라지면 오류임.

 

 

<가상 메서드>

메서드 -> 객체지향의 함수 메서드는 매서드의 이름이 곧 주소.

재 정의 한 경우 다른 메서드 영역 주소를 가르킴.

타입은 상위클래스로 했어도 인스턴스 생성을 하위 클래스로 한 경우

재 정의된 메서드에 대해서 생성한 인스턴스 클래스의 메서드로 실행.

but 멤버 변수에 대해서 하위 클래스가 갖고 있고 상위 클래스에 없는 변수를 상위 클래스 타입에

인스턴스 생성을 하위클래스로 한다 해도 상위 클래스에는 그 변수자체가 없으므로 사용 불가능.

오버라이딩 메서드에 대해 하위클래스의 메서드를 참조한다는 것만 가능.

반응형

'Java' 카테고리의 다른 글

down casting & instanceof  (0) 2019.10.27
다형성 , 형 변환  (0) 2019.10.27
상속  (0) 2019.10.27
자바 연습 (static 객체)  (0) 2019.10.26
자바 연습 (Array List)  (0) 2019.10.26