담비의 개발블로그

국비지원교육 65일차(java-상속) 본문

국비교육

국비지원교육 65일차(java-상속)

담비12 2024. 2. 15. 17:30

그 동안 1차 프로젝트를 진행하고 다시 오늘부터 진도를 나간다.

 

클래스 상속

- 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다.

- 상속을 이용하면 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져온다.(유지 보수 시간을 최소화할 수 있음)

class 자식클래스 extends 부모클래스{

//필드

//생성자

//메소드

}

 

ex) Coffee클래스를 상속해서 Mega클래스를 설계할때

public class Mega extends Coffee{

}

 

클래스 상속 특징 

- 여러 개의 부모 클래스를 상속할 수 없다.

- 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다.

 

 

부모 생성자 호출

- 클래스 상속을 진행하면 부모 생성자를 호출해야한다.

ex) Mega의 생성자가 명시적으로 선언되지 않았다면 생성되는 기본생성자

public Mega{

super();

}

 

메소드의 재정의

- 자식 클래스에서 수정해서 사용 하는 메소드가 있을때 사용하는 방법이다.

- 만약 자식 클래스 내부에서 재정의된 부모 클래스의 메소드를 호출해야 하는 상황이 발생한다면 명시적으로 super키워드를 붙여서 부모 메소드를 호출할 수 있다.( super.부모메소드(); )

 

메소드 재정의 방법

- 부모의 메소드와 동일한 시그니처(리턴타입, 메소드 이름, 매개변수 목록)를 가져야 한다.

- 접근 제한을 더 강하게 재정의할 수 없다.

- 새로운 예외(Exception)를 throws할 수 없다.

 

final클래스&final 메소드

- final 키워드는 클래스, 필드, 메소드를 선언할 때 사용할 수 있다. 해당 선언이 최종 상태이고 결코 수정될 수 없음을 뜻한다.

- 클래스를 선언할 때 final 키워드를 class앞에 붙이면 이 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다.

- 메소드를 선언할 때 final키워드를 붙이면 이 메소드는 최종적인 메소드이므로 재정의 할 수 없는 메소드가 된다.

 

ex) final클래스

public final class 클래스{...}

final 메소드

public final 리턴타입 메소드 ([매개변수, ...]){...}

 

 

protected접근 제한자

- 같은 패키지에서는 default와 같이 접근 제한이 없지만 다른 패키지에서는 자식 클래스만 접근을 허용한다.