카테고리 없음
super()
하얀잔디
2022. 11. 7. 13:22
Object 클래스를 제외한 모든 클래스의 생성자 첫줄에, 우선 별 명시가 없다면
컴파일러가 자동으로 super() ; 을 삽입한다.
class Point{
int x,y;
Point(int x,int y){
this.x=x;
this.y=y;
}
String getLocation(){
}
}
라고 가정합시다. 그리고 이를 상속받는
class Point3D extends Point {
int z;
Point3D(int x,int y,int z){
this.x = x;
this. y = y;
this.z =z;
}
String getLocation(){
}
}
위와 같은 클래스가 있고, 저 클래스가 상속하는 Point 클래스 가 있다고 가정하면,
<<에러가 발생합니다.
이유는 Poin3D 생성자 앞단에 super() 를 컴파일러가 자동으로 만듭니다.
그러면 , Point() 생성자는 존재하지 않기에 ( 매개변수가 없는 생성자) 에러가 발생합니다.
따라서, Point() 를 만들거나, Point3D 생성자 안에 Point(int x, int y ) 를 호출하도록 변경해야함.