본문 바로가기

개발자노트

클래스 ) 상속

[상속] = 이전에 개발 했던걸 다음 단계에서도 그대로 써야 하거나 논리적으로 상하관계(부모자식관계) 가 있을 때 사용

 

상속관계에서는 자식공간에서 부모공간을 다 가져온 다음에 만들어지기 때문에
부모공간에서 먼저 생성자를 만들어줘야한다.

package class03;

// [상속]
// 이전에 개발 했던걸 다음 단계에서도 그대로 써야 하거나 논리적으로 상하관계(부모자식관계) 가 있을 때 사용
class Shape{ //모양 클래스: 부모, 상위 클래스
	String name;
	double area;
	void showInfo() {
		System.out.println(this.name+" "+ this.area);
	}
	Shape(){
		System.out.println("Shape에서 호출한 기본 생성자");
	}
}
class Circle extends Shape{ // 원 클래스 : 원은 모양이기 때문에 자식, 하위 클래스, extends를 사용하여 shape의 자식이라는 것을 표시
		// extends는 한개밖에 상속 못받음
	int radius;
	Circle(){
		// 모든 자식 생성자에서는 
		// 가장 먼저 부모의 기본 생성자를 호출한다!!!★★★★★
		// 부모의 생성자를 호출하는 것이 생략되어있었다. -> super();
		System.out.println("Circle에서 호출한 기본 생성자");
	}
}
public class Test05 {

	public static void main(String[] args) {
		
		Circle c=new Circle();
		// 부모의 멤버변수, 메서드를 자식이 사용 가능 c. 쳐보면 볼 수 있다.
		
		System.out.println("----------");
		
		Shape s=new Shape();
		// 부모는 자식 클래스를 참조 할 수없음. s. 쳐보면 알 수 있다. (radius 안나옴)
	}

}