상속

Kjjedd·2022년 12월 22일

JAVA Practice

목록 보기
2/7

📌상속이란?

  • 상속(inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미.

  • 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아 새로운 클래스를 생성할 수 있음.

  • 기존에 정의되어 있던 클래스를 부모 클래스(parent class) 또는 상위 클래스(super class), 기초 클래스(base class)라고 함.

  • 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class), 파생 클래스(derived class)라고 함.

자식 클래스에는 부모 클래스의 필드와 메소드만이 상속되며,
생성자와 초기화 블록은 상속되지 않는다.

또한, 부모 클래스의 접근 제어가 private이나 default로 설정된 멤버는
자식 클래스에서 상속받지만 접근할 수 없다.

📖상속을 하는 이유

  • 기존에 작성된 클래스를 재활용할 수 있다.
  • 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면,
    자식 클래스에서는 해당 멤버를 작성하지 않아도 된다. (중복방지)
  • 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련한다.

예제코드

package inheritance_exam;

class Parents {
    private int a = 10;
    public int b = 20;
    int n = 100;

    void display(){
        System.out.println(a);
        System.out.println(b);
    }
}
class Child extends Parents{
    public int c = 30;
    public int n = 40;
    void print(){
        /** System.out.println(a);
         * 접근제한자 private / default 로 설정된 멤버는
         * 자식클래스에서 상속은 받지만 접근이 불가함.
         */
        System.out.println(b); // public으로 설정되어 접근이 가능
        System.out.println(c); // 자식클래스에서 선언된 멤버
        System.out.println(n); // 자식클래스에서 선언된 멤버
        System.out.println(this.n); //자식클래스에서 선언된 멤버 -> this
        System.out.println(super.n); //부모클래스에서 선언된 멤버 -> super
    }
}
public class Inheritance{
    public static void main(String[] args) {
        Parents p = new Parents();
        p.display(); //Parents 클래스의 메소드 출력
        Child ch = new Child();
        ch.print(); //Child 클래스의 메소드 출력

    }

}

출력

10 //부모클래스 int a
20 //부모클래스 int b
20 //부모클래스 int b (public으로 설정되어 자식클래스에서 접근 가능)
30 //자식클래스 int c
40 //자식클래스 int n
40 //자식클래스 int n ->this
100 //부모클래스에서 선언된 멤버를 자식클래스에서 'super'로 불러옴
profile
Gongbuhaja

0개의 댓글