Java

클래스의 상속 Inheritance, 기존 클래스 속성과 기능을 이어받다

데브노트 2025. 4. 21. 16:11

상속
inheritance

기존의 클래스를 확장하여 새로운 클래스를 정의하는 메커니즘을 말한다.

부모가 자식에게 재산을 물려주듯
미리 작성해둔 클래스의
1.속성과 2.메서드를 물려줄 수 있다.

부모클래스(상위,수퍼)
자식클래스(하위,차일드)

기능이 더 큰 쪽은 자식클래스 쪽이다.
(부모기능 + 자식기능)

 

상속 개념은 기존의 코드를 변경하지 않고 활용하고 싶을 때 활용한다.

package com.inheritance;
/**
 * 4.21 2강 상속개념 1
 *
 * 선임이 작성한 코드라고 가정한다
 */
public class A {

    String name;
    int height;
    int weight;
    int age;
    
}//end of A
package com.inheritance;
/**
 * 4.21 2강 상속개념 2
 */
public class B {
        
        //선임이 작성한 코드 예
        String name;
        int height;
        int weight;
        int age;
        
        /*
        선임이 작성한 코드는 그대로 두고
        기존 코드를 복붙하여
        추가로 필드를 선언해서 만든다
         */
        int level;
        String nickName;
        
        /*
        하지만 우리가 상속이라는 기법을 활용한다면
        더 편하게 작업을 할 수 있다.
         */
}//end of B
package com.inheritance;
/**
 * 4.21 2강 상속개념 3
 *
 * 선임이 작성한 코드를 따라쓴다고 가정한다
 *
 * 만약 상속이란 개념을 이해한다면
 * 기존 클래스의 속성과 메서드를 상속받아 작업할 수 있다.
 */
public class C extends A {
    /*
    ⭐C extends A
    C가 A에 선언된 필드를 물려받겠다는 뜻이다.

    이때 A클래스는 부모클래스가 되고
    C클래스는 자식클래스가 된다.

    💀단, 자바에서는 단일상속만 인정된다.
    충돌을 방지하기 위해서다.
     */
    int level;
    String nickName;

}//end of C

⭐C extends A
C가 A에 선언된 필드를 물려받겠다는 뜻이다.

이때 A클래스는 부모클래스가 되고
C클래스는 자식클래스가 된다.

💀단, 자바에서는 단일상속만 인정된다.
충돌을 방지하기 위해서다.

package com.inheritance;
/**
 * 4.21 2강 상속개념 4
 */
public class CMainTest1 {
    //main = 코드의 진입점
    public static void main(String[] args) {

        //A와 C는 상속관계
        C c = new C();
        c.name = "C클래스입니다";
        c.height = 100;
        c.weight = 20;
        c.age = 10;

        c.level = 1;
        c.nickName = "자식 C클래스";

    }//end of main
}//end of class