나는 상속 관련 자바 장을 연구 중이며 몇 가지 질문이 있습니다.수퍼 클래스 생성자의 인수는 무엇입니까?
상속이 어떻게 작동하는지 (메소드, 정보 숨기기, 서브 클래스의 수퍼 클래스에서 개인 필드를 사용하는 방법 등) 기본적인 개념을 이해하고 있지만, 한 가지 문제가 있습니다.
수퍼 클래스에 매개 변수가없는 기본 생성자가있는 경우 하위 클래스에서 매개 변수없이 기본값 인 새 생성자를 만들어야하지만 첫 번째 문에서는 수퍼 클래스 생성자 호출이 있어야 함을 의미합니다..
좋아요, 지금까지 그렇게 좋았습니다. 나는 지금까지 이해하고있다. 하위 클래스에서는 생성자 매개 변수 중 하나와 일치하는 수퍼 클래스 생성자를 호출해야합니다.
그러나이 검사 다음 코드를 할 수 있습니다 : (수퍼)public class Vehicle {
private int numOfWheels;
private double avgGallonsPerMile;
public Vehicle(int numOfWheels, double avgGallonsPerMile) {
this.numOfWheels = numOfWheels;
this.avgGallonsPerMile = avgGallonsPerMile;
}
}
그리고 또 다른 서브 클래스 코드 : 여기
public class Car extends Vehicle{
public Car(double avgGallonsPerMile) {
super(What should i write here?, avgGallonsPerMile);
//force numOfWheels to 4;
}
}
는 서브 클래스에 대한 훈련이다 : 각 서브 클래스 이 생성자를 포함
그 갤런 당 마일 수를 인수로 받고 은 바퀴 수를 적절한 값으로 강제 설정합니다 오토바이 2 및 차를 4.
서브 클래스 생성자에서 나는 (자동차 용) 2 (오토바이 용) 어쨌든 그것을 강제로하기 때문에 numOfWheels 필드이 필요하지 않습니다.
하지만 어쨌든 수퍼 클래스의 데이터가 필요합니다. 해당 데이터를 가져올 위치는 어디입니까? 수퍼 클래스 생성자를 호출 할 때 첫 번째 매개 변수는 무엇이어야합니다.
하지만 여전히 외로운 사례는 아닙니다. 나는 서브 클래스 생성자에서 매개 변수로 특정 데이터가 필요하지 않지만 수퍼 클래스 생성자 호출에서 필요로하는 많은 연습 문제가 있습니다.
그런 경우 어떻게해야합니까?
나는 정말로 당신이 나를 이해하기를 바랍니다. 좀 어렵습니다.
"나는 하위 클래스에서 특정 데이터가 필요하지 않습니다"a) 그것을 극복하거나 b) 수퍼 클래스에서 필드를 제거하십시오. –
Uhm ... 의견에 바퀴의 수를 4로 만들겠다고 말하면 어떻게됩니까? 힌트 : numWheels 필드는 private이므로 Vehicle 클래스 내에서만 액세스 및 수정/설정할 수 있습니다. 즉, numWheels에 적절한 값을 Car 생성자의 수퍼 클래스 생성자에 보내야합니다. – Alderath