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);
}
}

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);
}
}

Share article