Java/학교 자바 수업 정리

[Java] 01. 상속 정리 (1)

U__q 2023. 3. 23. 11:09
728x90

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

객체 지향에서 상속의 장점
- 클래스의 간결화 : 멤버의 중복 작성 불필요
- 클래스 관리 용이 : 클래스들의 계층적 분류
- 소프트웨어의 생산성 향상 : 클래스 재사용과 확장 용이, 새로운 클래스의 작성 속도 빠름

부모 클래스는 슈퍼 클래스라고 부르며, 자식 클래스는 서브 클래스라고 부른다. 상속은 extends 키워드를 사용한다.

예시

public class ColorPoint extends Point {
} // Point가 슈퍼 클래스 ColorPoint가 서브 클래스이다

 

자바 상속의 특징
- 클래스의 다중 상속 지원하지 않음
- 상속 횟수 무제한
- 상속의 최상위 조상 클래스는 java.lang.Object 클래스이다. (모든 클래스는 자동으로 java.lang.Object를 상속받으며, 자바 컴파일러에 의해 자동으로 이뤄진다.)

자바의 접근 지정자 4가지 (접근 가능 범위는 private < default < protected < public 순)
- 슈퍼 클래스의 private 멤버 : 슈퍼 클래스의 private 멤버는 다른 모든 클래스에 접근 불허, 클래스내의 멤버들에게만 접근 허용
- 슈퍼 클래스의 default 멤버 : 슈퍼 클래스의 default 멤버는 패키지내 모든 클래스에 접근 허용
- 슈퍼 클래스의 public 멤버 : 슈퍼 클래스의 public 멤버는 다른 모든 클래스에 접근 허용
- 슈퍼 클래스의 protected 멤버 : 같은 패키지 내의 모든 클래스 접근 허용, 다른 패키지에 있어도 서브 클래스는 슈퍼 클래스의 protected 멤버 접근 가능

new에 의해 서브 클래스의 객체가 생성될 때
- 슈퍼 클래스 생성자와 서브 클래스의 생성자가 모두 실행된다.
- 호출 순서 : 서브 클래스의 생성자가 먼저 호출되며, 서브 클래스의 생성자는 실행 전 슈퍼 클래스의 생성자를 호출한다.
- 실행 순서 : 슈퍼 클래스의 생성자가 먼저 실행된 후 서브 클래스의 생성자 실행한다.

예시

class A {
	public A() {
		System.out.println("생성자 A");
	}
}
class B extends A {
	public B() {
		System.out.println("생성자 B");
	}
}
class C extends B{
	public C() {
		System.out.println("생성자 C");
	}
}
public class ConstructorEx {

	public static void main(String[] args) {
		C c;
		c = new C();

	}

}


결과

생성자 A
생성자 B
생성자 C

 

728x90