
OOP 특징 2 - 상속성
상속(Inheritance)란?
- 부모 클래스로부터 속성 또는 특성 (attribute, property)을 상속받는 것
즉, variable(변수), method(함수)를 물려받는 것임 - 다중 상속은 불가능하다. (Java의 특징, 타언어는 가능)
예를 들어, class Child extends Human, Animal { ... 등은 불가
구문 형식 : extends
class 부모클래스명 {
부모변수
부모메소드
}
class 자식클래스명 extends 부모클래스명 {
((부모변수))
((부모메소드))
자식변수
자식메소드
}
코드 예시 1: 기본적인 형태
- 부모변수: number, name
- 부모메소드: parent_method()
- 자식클래스 (=Child)에서 부모의 변수와 함수를 모두 사용할 수 있음
class Parent {
int number;
String name;
void parent_method() {
System.out.println("Parent parent_method()");
}
}
class Child extends Parent {
}
// 메인함수
Child child = new Child();
child.number = 123;
child.name = "홍길동";
child.parent_method();

(참고) 자식 클래스의 인스턴스를 생성할 때 호출되는 생성자를 확인해보자
부모 생성자가 먼저 호출된 후, 자식의 생성자가 호출되는 것을 볼 수 있다


오버라이드 (Override)
- 상속 받은 클래스에서 추가/보강을 기입하는 것
- super: 부모 클래스를 가리키는 주소 (pointer; 참조 또는 reference라고도 함)
코드 예시 2: 부모 메소드를 오버라이딩 하는 경우


코드 예시 3: 부모 메소드를 오버라이딩 했으나, 부모 메소드를 호출하는 경우
이 때 접근지정자 super를 활용할 수 있다.



(참고) 부모 클래스의 멤버 변수의 접근제어자가 private 혹은 protected 일 때
private
- 자식 클래스에서 접근이 불가능하다
- 외부에서 접근이 불가능하다
- setter, getter로 외부에서 접근이 가능하다
코드 예시




protected
- 자식 클래스에서는 접근이 가능하다
- 외부에서는 접근이 불가능하다
- setter와 getter로 외부에서 접근이 가능하다
'Java > OOP' 카테고리의 다른 글
| [스크랩] JavaScript의 두 축 (Eric Elliott) (2) | 2025.01.24 |
|---|---|
| [Java] 다형성 (Polymorphism): 하나의 부모 인스턴스로 자식 객체를 관리 + 강제 형변환 (1) | 2025.01.08 |
| [Java] 오버로드 (Overload), 가변인수(...) (1) | 2025.01.06 |
| [Java] 객체 지향 프로그래밍 vs 절차 지향 프로그래밍 (1) | 2025.01.03 |
| [Java] 클래스 (Class) 정의, 접근 제어자, 상속, 인터페이스, 패키지 (1) | 2025.01.03 |