The Debugging Chronicles : "코드의 미학"
Mentor JAVA - section10. 상속 본문
상속
- 상속이란?
· 부모 역할을 하는 클래스가 자식 역할을 하는 클래스에게 클래스 멤버와 메서드를 물려주는 것을 말한다.
· 재사용을 하기 때문에 중복을 줄여주고 수정을 최소화하는 특징을 가지고 있다. (유지보수 용이성)
· extends라는 키워드를 사용해 상속받을 클래스를 지명한다.
· 자식 클래스는 부모 클래스의 모든 멤버를 그대로 가져다 쓸 수 있다.
상속에서의 생성자
- super()
· 부모 클래스의 생성자를 호출할 때 사용된다.
· 자식 클래스의 객체를 생성하기 위해 기본 생성자가 호출되면, super()라는 메서드를 통해 부모 클래스의 기본 생성자가 호출 된다.
그러므로, 개발자가 직접 생성자를 선언할 때 반드시 부모 클래스의 생성자를 호출해줘야한다.
오버라이딩
- 부모 클래스를 상속받은 자식 클래스는 부모 클래스의 필드와 메서드를 가져와서 그대로 사용이 가능하지만, 필요에 의해 자식 클래스가
상속받은 메서드를 다시 구현하는 것을 오버라이딩이라고 한다.
- 자식 객체를 생성하여 해당 메서드를 호출하면, 자식 클래스에서 구현한 메서드가 실행된다.
- super 키워드와 함께 사용이 가능하다.
조건
1. 부모 크래스의 메서드 이름/반환 타입/매개변수와 동일해야 한다.
2. 부모 클래스의 메서드 보다 접근 제한을 줄일 수 있으나 접근 제한을 늘릴 수는 없다. (default → public (O), public → private (X))
접근 제한자
- 제한자(modifier)
· 클래스, 변수 도는 메서드의 선언부에 함께 사용해 부가적인 의미를 부여하는 키워드를 의미한다.
· 접근 제한자와 기타 제한자로 구분한다.
- 접근 제한자
· 모든 클래스와 모든 멤버에 외부에서 접근하지 못하도록 접근 권한을 제한할 수 있으며, 이것을 위한 것이 접근 제한자이다.
· 접근이 필요하지 않은 곳에서의 사용을 막거나, 특정 범위에서만 접근할 수 있게 한다. (정보 은닉)
종류
접근 제한자
|
의미
|
public
|
제한 없이 모든 패키지, 모든 클래스에서 접근 가능하다.
|
protected
|
같은 패키지 내에서만 접근이 가능하며, 다른 패키지라도 자식 클래스라면 접근이 가능하다.
|
default
|
같은 패키지 내에서만 접근이 가능하다.
|
private
|
같은 클래스 내에서만 접근이 가능하다
|
2차 상속
- 부모 클래스에서 상속받은 자식 클래스도 다른 클래스에게 상속해줄 수 있다는 것이다. (N차 상속 가능)
final 클래스와 final 메소드
- final 키워드는 상수를 뜻해 필드 앞에 선언하여 사용하며, 초기화 이후 값을 바꿀 수 없으며 처음 정의된 상태로 변하지 않는다는 의미를 가진다.
- 이 효과는 클래스에서 사용이 가능하다.
- 생성자는 final을 추가할 수 없다.
- final 클래스
· 클래스 앞에 final을 추가할 경우, 이 클래스는 상속의 마지막 클래스임을 의미한다.
· 어떠한 클래스도 이 클래스의 자식 클래스가 될 수 없고, 이 클래스는 부모 클래스가 될 수 없다.
- final 메서드
· 메소드 앞에 final을 추가할 경우 상속받더라도, 오버라이딩을 할 수 없는 메서드 임을 뜻한다.
· 자식 클래스에서 선언된 메서드 그대로 사용해야 된다는 의미이다.
'JAVA > Mentor JAVA' 카테고리의 다른 글
Mentor JAVA - section12. 추상 클래스와 인터페이스 (0) | 2024.07.24 |
---|---|
Mentor JAVA - section11. 다형성과 타입 변환 (0) | 2024.07.22 |
Mentor JAVA - section09. 생성자 (0) | 2024.07.21 |
Mentor JAVA - section08. 메서드 (0) | 2024.07.19 |
Mentor JAVA - section07. 클래스 (0) | 2024.07.19 |