Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

노승현

상속이란? 본문

JAVA/Mentor JAVA

상속이란?

nsh95 2024. 1. 2. 08:40

상속은 우리가 일반적으로 알고 있는 의미와 비슷합니다. 부모가 자식에게 무언가를 물려주는 것을 상속이라 부르는 것처럼, 자바에서도 

부모 역할을 하는 클래스가 자식 역할을 하는 클래스에게 클래스 멤버와 메서드를 물려주는 것을 상속이라고 합니다.

상속은 클래스를 재사용하기 때문에 중복을 줄여주고 수종을 최소화하는 특징을 가지고 있습니다.

 

 

상속에서의 생성자

 

상속에서 생성자(Constructors)는 부모 클래스로부터 파생된(subclass 또는 derived class) 클래스가 인스턴스화될 때 호출되는 특별한 메서드입니다. 생성자는 클래스의 객체를 초기화하고 필요한 초기 설정을 수행하는 데 사용됩니다. 부모 클래스의 생성자는 부모 클래스의 객체를 초기화하고, 파생 클래스의 생성자는 부모 클래스의 생성자를 호출하면서 동시에 파생 클래스 자체의 초기화를 수행합니다.

 

super()

 

this() 메서드와 같은 클래스의 다른 생성자를 호출할 때 사용된다면, super() 메서드는 부모 클래스의 생성자를 호출할 때 사용합니다.

 

Comic(){
	super();	// 기본 생성자 호출
}

 

 

부모 클래스(매개변수1, 매개변수2){

       this. 필드1 = 매개변수1;

       this.필드2 = 매개변수2;

}

 

 

오버라이딩

부모 클래스를 상속받은 자식 클래스는 부모 클래스의 필드와 메서드를 가져와서 그대로 사용할 수 있습니다.

하지만 필요하다면, 자식 클래스가 상속받은 메서드의 내용을 변경해서 사용할 수 있습니다.

우리는  이렇게  상속받은 메서드르르 변경해서 다시 구현하는 것을 '오버라이딩'이라고 합니다.

메서드 오버라이딩을 위해서는 다음과 같은 제약사항을 지켜야 합니다.

 

1. 부모 클래스의 메서드 이름/반환 타입/ 매개변수와 동일해야 합니다.

2. 부모 클래스의 메서드 보다 접근 제한을 줄일 수는 있으나 (범위를 넓힐 수 있으나) 접근 제한을 늘릴 수는 없습니다.

(범위를 좁힐 수는 없습니다) default -> public(O), public -> private(X) 

 

 

접근 제한자

 

제한자(modifier)

제한자란 클래스, 변수 또는 메서드의 선언부에 함께 사용해 부가적인 의미를 부여하는 키워드를 의미합니다.

자바에서 제한자는 접근 제한자와 기타 제한자로 구분합니다.

 

접근 제한자

우리는 모든 클래스와 모든 멤버에 외부에서 접근하지 못하도록 접근 권한을 제한할 수 있습니다. 접근이 필요하지 않은 곳에서의 사용을 막거나, 특정 범위에서만 접근할 수 있게 하기 위함입니다. 이는 객체 지향 프로그래밍의 특징 중에 한가지인 정보 은닉을 지키기 위한 중요한 부분이기도 합니다.

 

public : 제한 없이 모든 패키지, 모든 클래스에서 접근 가능합니다.

protected : 같은 패키지 안에서 접근 가능하며, 다른 패키지라도 자식 클래스라면 접근 가능합니다.

default : 같은 패키지 내에서만 접근 가능합니다.

private : 같은 클래스 내에서만 접근 가능합니다.

 

 

final 클래스와 final 메서드

 

final 클래스

 

클래스 앞에 final 을 추가할 경우, 이 클래스는 상속의 마지막 클래스임을 뜻합니다. 어떠한 클래스도 이 클래스의 자식 클래스가

될 수 없고, 자연스럽게 이 클래스는 어떤 클래스의 부모 클래스가 될 수  없음을 의미합니다.

 

접근 제한자 final class 클래스명{

   ...

}

 

 

final 메서드

 

메서드 앞에 final을 추가하면 어떤 의미를 가질까요? 이 메서드는 상속 받더라도, 오버라이딩 할 수 없는 메서드임을 뜻합니다.

즉, 자식 클래스이더라도 부모 클래스에 final 로 선언된 메서드는 자식 클래스에서 오버라이딩 하지 못하고

그대로 사용해야 한다는 뜻입니다.

 

접근 제한자 final 리턴 타입 메서드 (매개변수1, 매개변수2, ...){

 

}

'JAVA > Mentor JAVA' 카테고리의 다른 글

내부 클래스  (0) 2024.01.09
다형성과 타입 변화  (0) 2024.01.06
생성자란?  (1) 2024.01.01
메서드란?  (0) 2023.12.28
클래스  (0) 2023.12.25