상위클래스
- 하위 클래스 보다 일반적인 개념
- 'parent class'
- 'super class'
- 'base class'
하위클래스
- 상위 클래스 보다 구체적인 개념
- 'child class'
- 'sub class'
- 'derived class'
클래스 삭송 문법(예약어 extends)
class B extends A {
}
- 속성과 기능이 이미 구현되어 있는 A에 필요한 추가 속성과 기능을 가진 B를 구현하는 것!!
- 예약어 뒤에 따로오는 클래스는 반드시 한개!!
하위클래스 생성 과정
- 반드시 상위 클래스의 생성자가 먼저 호출된다.
- 상위 클래스의 변수가 메모리에 먼저 생성되기 때문에 하위 클래스에서 이 값들을 사용가능 한 것!!
예약어 super()
- 하위 클래스에서 상위 클래스로 접근 할 때 사용
- 상위 클래스의 생성자 호출시에도 사용
- 디폴트 생성자의 경우 컴파일러가 자동으로 상위 클래스의 생성자를 호출한다
public String showVIPInfo(){
return super.showCustomerInfo() + "담당하는 상담사 아이디는" + agentID;
}
상위 클래스로 묵시적 형변환
- 상속받는 클래스는 상위 클래스의 기능을 모두 사용가능 하고 추가로 더 많은 기능을 구현 할 수 있다.
Customer vc = new VIPCustomer();
- 하위 클래스는 하위클래스형이면서 상위클래스형
- 클래스가 형변환시 선언한 클래스형에 기반하여 멤버변수와 메서드에 접근. 단, 가르킬 수 있는 변수와 메서드는 Customer형 뿐!!
- 상속계층이 여러 단계일 경우에도 형변환은 묵시적으로 이루어 진다.
Primate aHuman = new Human();
Mammal mHuman = new Human();
// 둘다 가능!!
메서드 오버라이딩
- 상위 클래스 메서드를 재정의 하는 것
- 상위 클래스에서 정의한 메서드와 하위클래스에서 구현할 내용과 맞지 않을 경우 사용
- 상속에서 상위 클래스와 하위클래스의 이름이 같은 메서드가 존재할 때 호출되는 메서드는 인스턴스에 따라 결정된다.
애그테이션
- "주석"이라는 의미
- @ + '애노테이션 이름'으로 표현
- 컴파일러에게 특정한 정보를 제공해주는 역할
가상 메서드
- 가상 메서드 테이블이 만들어지고 각 테이블은 각 메서드 이름과 실제 주소가 짝을 이루어 호출하는 원리
- 재정의되지 않은 메서드의 경우 메서드의 주소가 같다. (상위 클래스의 메서드가 호출됨)
다형성
- 하나의 코드가 여러 자료형으로 구현되어 실행되는 것
- 상위 클래스에서 공통 부분의 메서드를 제공, 하위 클래스에서는 그에 기반한 추가요소를 덧붙여 구현
- 필요에 따라 상속받는 모든 클래스를 하나의 상위 클래스로 처리
- 장점 : 코드 양 감소, 유지보수의 용이, 프로그램 확장성 향상
IS-A관계
- 일반적인 개념과 구체적인 개념의 관계
HAS-A관계
- 한 클래스가 다른 클래스를 소유한 관계
class Student{
Subject majorSubject;
}
상속, 항상 사용하는 것이 좋을까?
- No!!
- IS-A관계에서 사용하는 것이 가장 효율적
- 단순히 코드 재사용 목적으로 서로 관련이 없는 클래스들을 상속관계로 사용하는 것은 좋지 않은 코드!!
다운캐스팅(예약어 intanceof)
- 상위 클래스로 형변환한 하위 클래스를 다시 원래 자료형으로 형번환 하는 것
Animal hHuman = new Human();
if(hAnimal instanceof Human){
Human human = (Human)hAnimal;
}
- 상위 클래스로 형변환과 달리 명시적으로 작성해주어야 한다. ex) Human human = (Human)hAnimal
728x90
반응형
'Language > Java' 카테고리의 다른 글
'Do it 자바프로그래밍 입문' 10장 정리 (0) | 2022.09.23 |
---|---|
'Do it 자바프로그래밍 입문' 9장 정리 (0) | 2022.09.21 |
'Do it 자바프로그래밍 입문' 7장 정리 (0) | 2022.09.12 |
'Do it 자바프로그래밍 입문' 6장 정리 (0) | 2022.09.08 |
'Do it 자바프로그래밍 입문' 5장 정리 (0) | 2022.09.06 |
댓글