티스토리 뷰

728x90

상속

- 부모 클래스가 자식 클래스에게 클래스 멤버와 메서드를 물려주는 것

- 자식 클래스는 부모 클래스의 모든 변수, 메서드를 사용할 수 있다.

특징

- 클래스 재사용

- 중복 제거

- 수정 최소화

상속 구현 방법

- extends 키워드 사용

class A{
}

class B extends A{ //B클래스는 A클래스를 상속 받음
}

super()

- 자식 클래스의 기본 생성자( 부모의 클래스를 상속받은 클래스는 super()라는 생성자가 숨겨져있음 )

- 부모 클래스의 생성자를 호출할 때 사용

- 직접 생성자를 선언할 때도 자식 클래스에서 반드시 부모 클래스의 생성자를 호출해야함

- 자식 생성자의 첫줄에서 호출

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

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

this.필드2 = 매개변수2

}

자식 클래스(매개변수1, 매개변수2, ...){

super(매개변수1, 매개변수2, ...)

}

 

부모 생성자를 수동으로 선언해야 될 때

- 부모 클래스의 생성자가 기본 생성자(파라미터가 없음)가 아닐 때

 

오버라이딩

- 상속받은 메서드를 재정의해서 다시 구현하는 것

제약사항

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

- 부모 클래스의 메서드 보다 접근제한 범위를 넓힐 수는 있지만 좁힐 수는 없다

@Override 어노테이션

모든 어노테이션은 기능을 가지지만 Override는 기능이 없다.

재정의했다는 의미로 생략이 가능하다.

 

super키워드

- 부모 클래스에서 상속받은 필드나 메서드를 자식 클래스에서 참조하는데 사용하는 참조 변수

- 부모 클래스의 주소가 들어있다.

접근제한자

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

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

default : 접근제한자 표기 안했을 때, 같은 패키지 내의 클래스 끼리만 접근 가능

private : 같은 클래스 내에서만 접근 가능

 

*클래스는 접근 제한자로 public과 default만 사용 가능

 

2차 상속

상속 시 기능, 속성, 타입을 물려줌

타입은 유전자

다형성은 상속을 통해 가질 수 있음

자식 extends 부모 => 2형성, 하나만 상속 받을 수 있음

 

n차 상속

자식 extends 부모 = > 부모 + 조상1 + 조상2

부모 extends 조상1

조상1 extends 조상2

 

final(고정, 마지막)

- 변수, 클래스, 메서드에 모두 붙일 수 있다.

- 생성자에는 final을 붙일 수 없다.

 

변수

int a = 3; => 값을 바꿀 수 있음

final int a = 3; => 값을 바꿀 수 없음

1. 선언 후 값 변경 불가

2. 선언 시 초기 값을 반드시 부여(지역 final은 초기화 필요 없음)

 

메서드

final int add(int x, int y); =>  오버라이딩 불가

 

객체(클래스)

final class A{

}

=> 상속을 시킬 수 없음(부모클래스가 될 수 없다.)

  

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함