그건 그렇지 않습니다. 꽤 괜찮아. 수퍼 클래스의 생성자가 기본 생성자 (즉, 인수가없는 생성자) 인 경우에만 자동으로 호출됩니다.
슈퍼 클래스 s에는 기본 생성자가 없으므로 super(args..)
을 사용하여 명시 적으로 생성자를 호출해야합니다. 예를 들어
,이 BearManPig
의 생성자 Animal
이외의 다른 서명을 가지고 있다는 사실에도 불구하고 완벽하게 괜찮 :
이 때문에 자바가 인수 없음의 생성자 기본을 찾았다
public class Animal {
public Animal() {
}
}
public class BearManPig extends Animal {
public BearManPig(String string) {
}
}
.
이제 기본 생성자가 없으면 호출 할 항목을 명시해야합니다. 예를 들어,이 하지 작업을 수행합니다
// DOESN'T COMPILE
public class Animal {
public Animal(String string) {
}
public Animal(String string0, String string1) {
}
}
public class BearManPig extends Animal {
// There is no default constructor, stupid Java can't figure out what to do
public BearManPig(String string) {
}
}
을하지만이 작업을 수행합니다
// does compile
public class Animal {
public Animal(String string) {
}
public Animal(String string0, String string1) {
}
}
public class BearManPig extends Animal {
public BearManPig(String string) {
super(string); // I've told Java what to do
}
}
어떤 교과서입니까? – UmNyobe
저는 21 일 동안 Sams Teach Yourself Java 2를 사용했습니다. 나중에 자바의 새로운 기능을 따라 잡을 것이다. 그러나 그들이 말하는 것은 이것입니까? –
그럼 사실이 아니기 때문에 당신은 혼란 스러울 것입니다 ... – UmNyobe