현재 Java에서 두 클래스를 설계 중이며 현재의 상속 문제를 이해하는 데 어려움을 겪고 있으므로 간단한 예제 코드를 작성했습니다. 누군가 나에게 무슨 일이 일어나는지 이해하도록 도울 수 있습니다.부모 클래스의 메소드를 재정의하지 않고 자식 클래스의 변수로 사용하기
그래서이 예제에서는 부모 클래스 (일반적으로 Car 클래스라고 부름)와 자식 클래스 (RedCar 클래스)를 사용합니다. 부모 인 클래스는 애트리뷰트 거리를 포함하고 computeVelocity 메소드를 포함하는데,이 메소드는 입력 인자 time (double)을 취하고 distance의 double 값을 time으로 나누어 리턴한다.
하위 클래스에는 생성자 RedCar (double inputDistance)가 있습니다. 또한 오버라이드하지 않고 computeVelocity 메소드에 액세스해야합니다.
여기가 문제의 원인입니다. 논리적으로, computeVelocity는 다른 클래스의 메소드를 호출하기 때문에 RedCar에서 inputDistance 변수를 가져 오면 안된다는 것을 이해합니다. 그러나 내가 알고 싶은 것은 그 메소드를 RedCar 클래스에 가져 와서 생성자에게 넘겨주는 인자로 클래스 안에서 사용할 수 있도록하는 것이다. 여기
당신이 대답에, 당신이 정말로 필요로하지 않고 한 번 부모 클래스와 (2 회 거리가 없어야 의견의 일부에 명시된 바와 같이 코드//Car Class
public abstract class Car{
//abstract variable
private double distance;
//compute velocity method
public double computeVelocity(double time){
return distance/time;
}
}
//RedCar Class
public class RedCar extends Car{
public double distance;
public RedCar (double inputDistance){
this.distance = inputDistance;
}
//This is currently my method but I believe this already constitutes as overridding
public double computeVelocity(double hours){
Car.super.computeVelocity(hours);
}
}
그것은 당신이 여기서 뭘하려는, 또는 왜 방법이 전혀 오버라이드 (override) 할 필요가 무엇을 나에게 정말 분명하지 않다 :
당신이 메서드를 호출 할 수 있습니다. 오버라이드가 아무 것도 추가하지 않기 때문에 왜 모든 것을 추가 할 수 있습니까? 왜 그냥 기본 클래스의 'computeVelocity' 메서드를 사용하지 않을까요? – David
하위 클래스에 두 번째 거리 필드가 없어야합니다. 그런데 기본 클래스의 distance 필드는 항상 0입니다. 기본 클래스에서 distance를 인수로 사용하여 보호 된 생성자를 가지고 하위 클래스 생성자에서 (super (distance)를 사용하여) 호출하십시오. –