본문 바로가기

Java

[Java] 상속을 알아보자(업캐스팅, 다운캐스팅)

반응형

상속

객체 지향에서 상속은 부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것
상속은 코드 중복을 제거하여 클래스를 간결하게 구현할 수 있게 한다.

상속과 생성자

서브 클래스와 슈퍼 클래스는 각각의 생성자를 가지고 있다.

서브 클래스 객체가 생성될 때 서브 클래스와 슈퍼 클래스의 생성자가 모두 호출되며,

서브 클래스의 생성자보다 슈퍼 클래스의 생성자가 먼저 호출된다.

 

업캐스팅과 다운캐스팅

캐스팅이란 타입 변환이다.

1. 업캐스팅

서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환하는 것

 

위 코드를 보면, p.name은 접근이 가능하지만 p.grade에는 접근이 불가능하다는 것을 알 수 있다.

업캐스팅한 레퍼런스로는 슈퍼 클래스의 멤버만 접근이 가능하다!

2. 다운캐스팅

업캐스팅과 반대로 캐스팅한 것

다운캐스팅은 업캐스팅과는 달리 슈퍼 클래스와 서브 클래스의 멤버에 모두 접근 가능하다.

 

instanceof 연산자

레퍼런스가 가리키는 객체가 어떤 클래스 타입인지 구분하기 위한 연산자로,

레퍼런스 instanceof 클래스명 형식으로 사용

 

코드를 보면, 서브 객체인 s는 슈퍼 클래스인 Person의 인스턴스가 될 수 있지만,

슈퍼 객체인 p는 서브 클래스인 Student의 인스턴스가 될 수 없다.

반응형