이번 포스팅은 상속에 대해서 알아보려고 한다.
상속은 말 그대로 부모가 자식에게 물려주는 행위를 말하며, 자식은 상속을 통해서 부모가 물려준 것을 자유롭게 이용할 수 있다.
상속의 장점
이미 잘 개발된 클래스의 기능을 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여줄 수 있고, 유지보수가 편리하며, 통일성이 있고 다형성을 구현할 수 있다.
클래스 상속
현실에서 상속은 부모가 자식을 선택해서 물려주지만, 프로그램에서는 자식이 부모를 선택한다.
이 때 상속받는 클래스를 자식 클래스, 하위 클래스 또는 서브 클래스라고 부른다. 상속을 해주는 클래스를 부모 클래스, 상위 클래스 또는 슈퍼 클래스라고 한다.
자바에서 자식 클래스는 다음과 같은 문법을 통해 선언한다.

상속받을 자식 클래스 뒤에 extends 키워드를 사용하고 부모 클래스를 적어주면 된다.
자바의 상속 특징
1. 자바에서는 여러개의 부모 클래스를 상속할 수 없다. (다중상속 지원x)
즉, 1개의 부모 클래스로부터의 단일 상속만 허용된다. 하지만 부모 클래스는 여러 개의 자식 클래스에게 상속이 가능하다.
class 자식클래스 extends 부모클래스1,
|
2. 부모클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. 그리고 부모 클래스와 자식클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다.
예제.
class Parent {
private int a = 10; // private 필드
public int b = 20; // public 필드
}
class Child extends Parent {
public int c = 30; // public 필드
void display() {
① // System.out.println(a); // 상속받은 private 필드 참조
② System.out.println(b); // 상속받은 public 필드 참조
③ System.out.println(c); // 자식 클래스에서 선언한 public 필드 참조
}
}
public class Inheritance01 {
public static void main(String[] args) {
Child ch = new Child();
ch.display();
}
}
실행결과
20
30
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
위 예제의 ②번 라인에서는 자식 클래스의 메소드에서 부모 클래스에서 상속받은 public 필드를 참조하는데,
이처럼 자식 클래스에서 따로 선언하지 않은 필드라도 해당 이름의 필드를 부모 클래스에서 상속받았다면 문제가 없다.
하지만 주석 처리된 ①번 라인처럼 해당 필드가 부모 클래스의 private 필드라면 접근할 수 없으므로, 오류를 발생시킬 것이다.
또한, 자식 클래스에서는 ③번 라인처럼 자신만의 필드나 메소드를 선언하여 사용할 수 있다.
3. 클래스 앞 final 키워드는 다른 클래스가 상속 불가
부모클래스 super class
자식클래스 sub class
접근 제어자
public : 같은/다른 패키지 모두 접근 가능
private : 같은 패키지 내에서만 접근 가능, 자식이 상속 받을 수 없는 필드
defualt
protected : 다른 패키지에서는 자식 클래스만 접근할 수 있다
'공부 기록노트 > java' 카테고리의 다른 글
[Java] GUI 프로그래밍을 위한 AWT (0) | 2023.01.01 |
---|---|
[조건문] if문과 switch문 (0) | 2022.10.02 |
[메소드] Math.random( ) (0) | 2022.10.02 |
메소드 오버라이딩 (0) | 2022.08.12 |
코드 작성 연습방법 (1) | 2022.08.09 |