inblog logo
|
DailyCoding
    JAVA

    20. 상속(Inheritance)

    박은서's avatar
    박은서
    Jan 01, 2026
    20. 상속(Inheritance)
    Contents
    1. 상속(Inheritance)1️⃣ 상속이란?2️⃣ 상속의 목적3️⃣ 상속 기본 문법4️⃣ 상속 관계 용어5️⃣ 상속 되는 것 / 안 되는 것6️⃣ 생성자와 상속7️⃣ super 키워드8️⃣ Object 클래스9️⃣ final과 상속🔟 실습

    1. 상속(Inheritance)

    교재 p.

    1️⃣ 상속이란?

    새로운 클래스(자식)를 기존 클래스(부모)와 타입을 일치시키는 것

    2️⃣ 상속의 목적

    • 타입 일치
    • 추상화
    ➡️ 다형성을 이용해서 여러가지 객체를 타입으로 일치 시킬 수 있음

    3️⃣ 상속 기본 문법

    class Parent { int x; void show() {} } class Child extends Parent { int y; }
    • extends 키워드 사용
    • 단일 상속만 가능

    4️⃣ 상속 관계 용어

    용어
    의미
    부모 클래스
    상위 클래스, 슈퍼 클래스
    자식 클래스
    하위 클래스, 서브 클래스

    5️⃣ 상속 되는 것 / 안 되는 것

    ⭕ 상속 가능

    • public / protected 필드, 메서드
    • default (같은 패키지)

    ❌ 상속 불가능

    • private 멤버
    • 생성자
    📌 생성자는 호출만 가능

    6️⃣ 생성자와 상속

    class A { A() { System.out.println("A"); } } class B extends A { B() { System.out.println("B"); } }
    출력:
    A B
    📌 부모 생성자 먼저 실행

    7️⃣ super 키워드

    1) 부모 멤버 접근

    super.show();

    2) 부모 생성자 호출

    super();

    8️⃣ Object 클래스

    • 모든 클래스의 최상위 부모
    • toString(), equals(), hashCode()

    9️⃣ final과 상속

    final class A {}// 상속 불가
    final void run() {}// 오버라이딩 불가

    🔟 실습

    1) 이상한 나라의 앨리스 예시

    package ex06.ch01; class 재판관{} class 진행자{} class 죄인{} class 왕 extends 재판관{ } class 왕비 extends 재판관{ } class 토끼 extends 진행자 { } class 모자장수 extends 죄인 { } public class Ex01 { public static void main(String[] args) { 죄인 u1 = new 모자장수(); // [죄인, 모자장수] // 토끼 u2 = new 진행자(); -> 오류! 메모리에는 진행자만 떠있음 재판관 u3 = new 왕(); // [왕, 재판관] } }

    2) 지구인 예시

    package ex06.ch01; class 지구인 { } class 유럽인 extends 지구인 { } class 아시아인 extends 지구인 { String color = "황색"; } class 한국인 extends 아시아인 { } class 일본인 extends 아시아인 { } class 영국인 extends 유럽인 { } public class Ex02 { public static void main(String[] args) { 한국인 s1 = new 한국인(); // [한국인 - 아시아인 - 지구인] System.out.println(s1.color); } }
    notion image
    ex) 한국인 → 아시아인(황색) → 지구인
    ⭕ 한국인 타입으로 한국인 new 해도 황색 데이터 찾을 수 있음
    ❌ 지구인 타입으로 한국인 new 하면 황색 찾을 수 없음
    한국인, 아시아인, 지구인 모두 동일한 데이터를 가지고 있어서 찾으면 그 위로 더 이상 올라가지 않음

    3) 동물 예시

    package ex06.ch02; class Animal { int i = 1; String name = "동물"; } class Cat extends Animal { int i = 2; // String name = "고양이"; int age = 5; } class Dog extends Animal { int i = 3; String name = "강아지"; } public class ExVar01 { public static void main(String[] args) { Animal a1 = new Animal(); // [Animal] System.out.println(a1.i + ", " + a1.name); Dog a2 = new Dog(); // [Dog(v), Animal] System.out.println(a2.i + ", " + a2.name); Animal a3 = new Dog(); // [Dog, Animal(v)] System.out.println(a3.i + ", " + a3.name); Cat a4 = new Cat(); // [Cat(v), Animal] System.out.println(a4.i + ", " + a4.name + ", " + a4.age); } }
    notion image
     
     
     
    Share article
    Contents
    1. 상속(Inheritance)1️⃣ 상속이란?2️⃣ 상속의 목적3️⃣ 상속 기본 문법4️⃣ 상속 관계 용어5️⃣ 상속 되는 것 / 안 되는 것6️⃣ 생성자와 상속7️⃣ super 키워드8️⃣ Object 클래스9️⃣ final과 상속🔟 실습

    DailyCoding

    RSS·Powered by Inblog