클래스를 한번 쓰고 버리기에 아깝기 때문에
자식 클래스로 상속 시켜서 코드 재사용성을 높인다
즉 상속이란 "기존의 클래스를 재사용해서 새로운 클래스를 만드는 것"
상위 클래스 : Point
하위 클래스 : ColorPoint
상속 : class ColorPoint extends Point
Point
부모클래스
상위클래스
ColorPoint
자식클래스
하위클래스
파생클래스
상속 가능한 문법과 불가능한 문법
[ o ]
class A
class B extends A
class C extends B
class D extends A
[ x ]
class A
class B
class C extends A,B // 2개 안 됨

package class01;
class Point {
private int x;
private int y;
// 기본 생성자
Point(){
System.out.println("Point 클래스의 기본(디폴트) 생성자");
}
void move(int x) {
this.x += x;
this.y += y;
}
void printInfo() {
System.out.println("(" + this.x + ", " + this.y + ")");
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
class ColorPoint extends Point {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class Test01 {
public static void main(String[] args) {
System.out.println("로그01");
Point point = new Point();
System.out.println("로그02");
ColorPoint cp = new ColorPoint();
System.out.println("로그03");
point.setX(100);
point.printInfo();
cp.printInfo();
}
}

Point 기본 생성자가 2번 호출되었다
ColorPoint cp = new ColorPoint(); 로 인해
기본생성자가 다시 호출됐음을 알 수 있다
자식의 모든 생성자들은
가장 먼저 부모의 기본 생성자를 호출한다

자식은 부모의 기본 생성자를 먼저 호출하기 때문에 에러 발생
Shape(){
}
라는 기본 생성자가 없어 class Circle에 에러가 발생한다
이렇게 기본 생성자를 작성하면 될까?? -> ㄴㄴ
1. 설계가 완벽하다
자식을 코딩중이다? == 부모는 완성되었다!
2. 코드에는 "뜻(뉘앙스)"이 있다!!!
기본 생성자를 만듦으로써, 뜻이 달라진다
값을 안줘도 이름과 넓이 없는 객체를 생성할 수 있도록 해주겠다고 해석할 수 있게 된다 -> 안 됨.
[ 해결방법 ]

1. 부모한테 기본 생성자 만들기 = 올바르지 않을 경우가 큼
2. 부모의 다른 생성자를 사용한다
protected : 자식은 접근 가능, 외부에서는 접근 불가능
'🍏 개발일기' 카테고리의 다른 글
| 모동숲으로 implement/interface 이해하기 (0) | 2025.10.22 |
|---|---|
| 오버로딩과 오버라이딩 | 동적바인딩 (0) | 2025.10.20 |
| 클래스 | 공유자원 (0) | 2025.10.17 |
| 학생부 프로그램 (0) | 2025.10.15 |
| 매개변수(parameter)와 인수(argument)의 차이 (0) | 2025.10.14 |