상속(Inheritance)
기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미하며 캡슐화, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나이다.
사용방법
- 자바의 예약어 extends를 자식클래스의 뒤에 부모클래스를 지정하면 그 클래스를 상속받는다는 것이다.
- ex) public class 자식클래스 extends 부모클래스
- 하나의 부모 클래스(parent class)는 여러개의 자식 클래스(children)을 가질 수 있다.
- 한번에 여러개의 클래스로부터 상속을 받을수는 없다.
- 부모 클래스(parent class)로부터 상속받은 자식 클래스는 부모 클래스의 자원(source) 모두를 사용 할 수 있다.
- (반대로 부모클래스는 자식클래스의 자원을 가져다 쓸 수는 없다.)
- 자식클래스는 또다른 클래스의 부모 클래스가 될 수 있다.
- 자식클래스는 부모클래스로부터 물려받은 자원을 override 하여 수정해서 사용 할 수 있다.
- 부모클래스가 상속받은 자원도 자식클래스가 사용 가능.
상속의 장점
1. 기존에 작성된 클래스를 재활용할 수 있다.
2. 클래스의 기능 테스트에 대한 생산성 및 정확성 증가
3. 클래스 수정/추가에 대한 유연성 및 확장성 증가
super와 super()
super : 자신을 가리키는 키워드가 this였다면, 부모를 가리키는 키워드는 super이다.
부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수이다.
부모 클래스의 멤버와 자식 클래스의 멤버 이름이 같을 경우 super 키워드를 사용하여 구별할 수 있다.
super 참조 변수를 사용하여 부모 클래스의 멤버에 접근가능하다.
this와 마찬가지로 super 참조변수를 사용할 수 있는 대상도 인스턴스메소드뿐이며, 클래스메소드에서는 사용X.
super() : 부모의 생성자를 의미, 부모의 생성자를 임의로 호출하지 않으면 부모 class의 기본 생성자가 자동으로 호출
super() 메소드는 부모 클래스의 생성자를 호출할 때 사용된다.
자식 클래스의 인스턴스를 생성하면, 해당 인스턴스에는 자식 클래스의 고유 멤버뿐만 아니라 부모 클래스의 모든 멤버까지도 포함되어 있다. 따라서 부모 클래스의 멤버를 초기화하기 위해서는 자식 클래스의 생성자에서 부모 클래스의 생성자까지 호출해야한다.
자바 컴파일러는 부모 클래스의 생성자를 명시적으로 호출하지 않는 모든 자식 클래스의 생성자 첫 줄에 자동으로 다음과 같은 명령문을 추가하여, 부모 클래스의 멤버를 초기화할 수 있도록 해줘야한다.
오버로딩과 오버라이딩
오버로딩(overloading)은 새로운 메소드를 정의하는 것.
오버라이딩(overriding)은 상속받은 기존의 메소드를 재정의하는 것.
'언어 > JAVA' 카테고리의 다른 글
12장 object (0) | 2021.10.22 |
---|---|
11장 API (0) | 2021.10.21 |
9장 패키지 / 접근제어자 (0) | 2021.09.21 |
8장 참조자료형 (0) | 2021.09.21 |
6장 조건문 / 반복문 (0) | 2021.09.19 |