본문 바로가기
자바 프로그래밍/강의 노트

상속A

by 세인트킴 2023. 5. 29.

상속(inheritance)

  • 부모클래스에 만들어진 필드, 메소드를 자식클래스가 물려받음.
  • 상속을 통해 간결한 자식 클래스 작성. 동일한 특성을 재정의할 필요가 없어서 간결해진다.

상속의 장점

  • 클래스의 간결화 - 멤버의 중복 작성이 불필요하다.
  • 클래스 관리 용이 - 클래스들의 계층적 분류
  • 소프트웨어의 생산성 향상 - 클래스 재사용과 확장 용이, 새로운 클래스의 작성 속도가 빠르다.

상속의 특징

  • 클래스의 단일 상속만 지원
  • 상속 횟수는 무제한
  • 상속의 최상위 조상 클래스는 java.lang.Object클래스 - 모든 클래스는 컴파일러에 의해 자동으로 java.lang.Object를 상속받음. 

상속 선언

public class Person {
...
}
public class Student extends Person { // Person을 상속받는 클래스 Student 선언
...
}
public class StudentWorker extends Student { // Student를 상속받는 클래스 StudentWorker 선언
...
}

객체 생성

서브클래스에서 슈퍼클래스의 멤버 접근

상속과 접근 지정자

  • 슈퍼 클래스의 private멤버 - private멤버는 다른 모든 클래스에 접근 불허, 클래스 내의 멤버들에게만 접근 허용
  • 슈퍼 클래스의 default 멤버 - 패키지 내의 모든 클래스에 접근 허용
  • 슈퍼 클래스의 public 멤버 - 다른 모든 클래스에 접근 허용
  • 슈퍼 클래스의 protected 멤버 - 같은 패키지 내의 모든 클래스 접근 허용, 다른 패키지에 있어도 서브 클래스는 슈퍼 클래스의 protected 멤버 접근 가능

서브 클래스 / 슈퍼 클래스의 생성자 호출 및 실행

new에 의해 서브 클래스의 객체가 생성될 때

  • 슈퍼 클래스 생성자와 서브 클래스 생성자 모두 실행된다.
  • 호출 순서 - 서브 클래스의 생성자가 먼저 호출, 서브 클래스의 생성자는 실행 전 슈퍼 클래스 생성자 호출
  • 실행 순서 - 슈퍼 클래스의 생성자가 먼저 실행된 후, 서브 클래스의 생성자 실행

슈퍼 클래스 생성자 호출 방법

class A { 
	int x;
    public A() {
    	x = 0;
    }
}

class B extends A {
	int y;
    public B() {
    	super(); // 생성자의 첫 번째 코드, super() 호출을 하지 않으면 컴파일러가 자동으로 추가한다.
        y = 0;
    }
}

public class C {
	public static void main(String[] args) {
    	B obj = new B();
        ...
}

슈퍼 클래스와 서브 클래스의 생성자 간의 호출 및 실행 관계 

 

 

 

 

 

 

'자바 프로그래밍 > 강의 노트' 카테고리의 다른 글

상속C  (0) 2023.06.12
상속B  (0) 2023.06.05
클래스와 객체D  (0) 2023.05.22
클래스와 객체C  (0) 2023.05.15
클래스와 객체B  (0) 2023.05.08