<객체 지향 프로그래밍 25장~32장>
상속
새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속 받아서 속숭이나 기능이 확장되는 클래스를 구현한다.
Customer 클래스
VIP Customer 클래스 만들기
기능
- 제품 구매시 10% 할인
- 보너스 포인트 5% 적립
- 담당 상담원 배정
( 더 많은 속성과 기능이 추가된다)
( customerGrade가 private으로 되어있다면 상속이 되어있어도 사용할수 없다.
-> protected를 사용하면 상속에서 사용가능(하위클래스에서 사용가능))
접근 제한자의 가시성
상속에서 클래스 생성 과정과 형 변환
하위 클래스가 생성되는 과정
- 하위 클래스가 생성 될 때 상위 클래스가 먼저 생성 됨
super(); 라는 상위클래스의 기본 생성자를 먼저 호출한다.
만약 상위클래스의 기본생성자가 없는경우 (매개 변수가 있는 생성자만 존재하는 경우)
하위 클래스는 명시적으로 상위클래스의 생성자를 호출해야 한다.
상위 클래스로의 묵시적 형 변환 (업캐스팅)
- 하위클래스의 타입은 상위클래스의 타입으로 묵시적 형변환이 된다. (역은 성립 x)
매서드 오버라이딩
오버라이딩
- 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과
맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있다.
가상 메서드 (virtual method)
- 메서드의 이름과 메서드 주소를 가진 가상 메서드 테이블에서 호출될 메서드의 주소를 참조
다형성
다형성 (polymorphism) 이란?
- 하나의 코드가 여러 자료형으로 구현되어 실행되는 것
( 같은 코드에서 여러 실행 결과가 나옴)
정보은닉, 상속 과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나
객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징임
다운캐스팅과 instanceof
- 묵시적으로 상위 클래스 형변환된 인스턴스가 원래 자료형(하위클래스)으로 변환 되어야
할 때 다운캐스팅이라고 한다.
- 하위 클래스로의 형 변환은 명시적으로 되어야 한다.
Customer vc = new VIPCustomer(); // 묵시적
VIPCustomer vCustomer = (VIPCustomer)vc; // 명시적
안정적으로 다운캐스팅 하귀 위해 if문에 instanceof 를 설정하고 오버라이딩을 사용하면 좋지만 예를 들면 독수리가 책을 읽는 메서드는 할수 없으니 따로 메서드를 쓰기 위해 다운캐스팅을 하여 메서드를 사용한다.
'백엔드 > Java' 카테고리의 다른 글
<FAST CAMPUS>자바 웹개발-객체지향 프로그래밍 (0) | 2021.01.12 |
---|---|
<FAST CAMPUS>자바 웹개발 - 객체지향 프로그래밍 (0) | 2021.01.10 |
<FAST CAMPUS>자바 웹개발 - 객체지향 프로그래밍 (0) | 2021.01.06 |
<FAST CAMPUS>자바 웹개발 - 객체지향 프로그래밍 (0) | 2020.12.31 |
<FAST CAMPUS>자바웹 개발 - 객체지향 프로그래밍 (0) | 2020.12.31 |
댓글