본문 바로가기
자바 프로그래밍/강의 노트

상속B

by 세인트킴 2023. 6. 5.

업캐스팅(Upcasting)

서브 클래스 객체는 슈퍼 클래스의 멤버를 모두 가지고 있다. 또한 슈퍼 클래스의 객체로 취급할 수 있다.

업캐스팅: 서브 클래스 객체를 슈퍼 클래스 타입으로 변환, 업캐스팅된 레퍼런스는 객체 내에 슈퍼 클래스의 멤버만 접근 가능

class Person{...}
class Student extends Person{...}

Student s = new Student();
Person p = s; //업캐스팅, 자동타입변환

다운캐스팅(Downcasting)

슈퍼 클래스 변수에 들어있는 레퍼런스를 서브 클래스 타입으로 변환, 개발자의 명시적 타입 변환 필요

class Person {...}
class Student extends Person {...}
...
Person p = new Student("이재문"); // 업캐스팅
...
Student s = (Student)p; // 다운캐스팅, (Student)의 타입 변환 표시 필요
Student s = p; // 강제로 타입변환을 하지 않으므로 오류 발생

instanceof 연산자와 객체의 타입 판단

실제로는 서브 클래스 객체가 아니라면 실행오류가 발생한다.

Person p = new Person("선생님");
Student s = (Student) p; // 실행오류 발생

instanceof 연산자

레버런스가 가리키는 객체의 타입 식별을 위해 사용

객체 레퍼런스 instanceof 클래스 타입
연산 결과: true / false의 불린 값

메소드 오버라이딩(Method Overriding)

슈퍼 클래스의 메소드를 서브 클래스에서 재정의(메소드 이름, 매개변수 타입 및 개수, 리턴 타입 등 모든 것을 동일하게 작성

메소드 무시하기, 덮어쓰기로 번역되기도 한다.

동적 바인딩 발생 - 서브 클래스에 오버라이딩 된 메소드가 무조건 실행되는 동적 바인딩

오버라이딩의 목적

슈퍼 클래스에 선언된 메소드를 각 서브 클래스들이 자신만의 내용으로 새로 구현하는 기능

상속을 통해 하나의 인터페이스(같은 이름)에 서로 다른 내용 구현이라는 객체 지향의 다형성 실현

오버라이딩은 실행 시간 다형성 실현한다.

오버라이딩 VS 오버로딩

 

 

 

 

 

 

 

 

 

 

 

 

 

'자바 프로그래밍 > 강의 노트' 카테고리의 다른 글

상속C  (0) 2023.06.12
상속A  (0) 2023.05.29
클래스와 객체D  (0) 2023.05.22
클래스와 객체C  (0) 2023.05.15
클래스와 객체B  (0) 2023.05.08