java使代码可用于其他子类和子类
我制作了一个超类(抽象)、一个子类(抽象)和一个子类
有一段代码我想保存在超类的构造函数中,但除非我把它放在子类中,否则它无法正常工作
超类:
public abstract class SuperClass{
protected int x, y, halfX, halfY;
public SuperClass(){
halfX = x / 2;
halfY = y / 2;
}
子类:
public abstract class SubClass extends SuperClass{
public SubClass(int x, int y){
this.x = x;
this.y = y;
}
子类:
public class SubSubClass extends SubClass{
int half;
public SubSubClass(int x, int y){
super(x, y);
}
public void myMethod(){
half = halfX + halfY;
}
如果我从超类构造函数中删除halfX = x / 2;
halfY = y / 2;
并将其放入子类构造函数中,代码就会工作。像这样:
public abstract class SubClass() extends SuperClass{
public SubClass(int x, int y){
this.x = x;
this.y = y;
halfX = x / 2;
halfY = y / 2;
}
}
我希望这段代码可用于其他子类(和子类),而不是仅用于该子类
# 1 楼答案
正如您在
SubSubClass
中调用super(x, y);
,您需要在SubClass
中执行同样的操作。它没有什么神奇之处,只需将值传递给超类,这样x
和y
将被设置,然后再尝试计算一半的值我强烈建议尽可能地将字段设置为
final
,在这种情况下,它们应该是final
顺便说一句:如果你想看看发生了什么,你可以在调试器中单步执行你的代码