为什么我在
之前加上“//”extends Point
结果没有任何变化?
public class lab11info
{
public class Point
{
private float x;
private float y;
protected float getX(){
return x;
}
protected float getY(){
return y;
}
protected void setX(float newX){
x = newX;
}
protected void setY(float newY){
y = newY;
}
}
public class Points extends Point
{
private Point[] points;
public Points(int numberOfPoints)
{
this.points = new Point[numberOfPoints];
}
public void pointSetX(int index, float x)
{
if(points[index]==null)
points[index] = new Point();
points[index].setX(x);
}
public void pointSetY(int index, float y)
{
if(points[index]==null)
points[index] = new Point();
points[index].setY(y);
}
public float pointGetX(int index)
{
if(points[index]!=null)
return points[index].getX();
else
return 0f;
}
public float pointGetY(int index)
{
if(points[index]!=null)
return points[index].getY();
else
return 0f;
}
}
public static void main(String args[])
{
lab11info Main = new lab11info();
Points points = Main.new Points(5);
points.pointSetX(1,1.9099f);
System.out.println(points.pointGetX(1));
}
}
答案 0 :(得分:4)
您观察的内容与字段和方法是public
还是protected
无关。
您的Points
类不会使用它继承的方法和字段。 main
方法也没有。这就是删除extends
时没有任何变化的原因。
但这里真正的问题是你的对象建模(即Points extends Point
)“说”没什么意义。
Points
对象封装了Point
个实例的“排序”列表,其中包含访问和更新各个点的X和Y值的方法。
但是你说Points
对象是-a Point
;即,Points
对象具有额外的X
和Y
坐标...独立于Point
对象的Points
组件的坐标。
点集合应该有额外的X,Y坐标的想法是......很难理解......我很确定这不是你想要表达的内容你的建模。
此示例中public
与protected
唯一可能的相关性是,无关类中的代码无法调用protected
Point
方法由Points
继承的。但这与您的main
方法无关。由于main
方法是Points
的方法,因此可以合法地调用这些方法。