【发布时间】:2014-10-12 19:04:06
【问题描述】:
我对 java 中的 super 关键字有疑问。 按照下面的例子:
public class Circle {
private double radius;
private double area;
public void setRadius(double radius){
this.radius = 1;
}
public double getRadius(){
return this.radius;
}
public void setArea(double radius){
this.area = area;
}
public double getArea(){
return this.area = Math.PI * radius * radius;
}
}
public class Cylinder extends Circle {
private double height;
public Cylinder(){
super();
height = 1;
}
public Cylinder(double height){
super();
this.height = height;
}
public Cylinder(double radius, double height){
super();
this.height = height;
public double getHeight(){
return height;
}
}
public double getVolume(){
return getArea()*height;
}
}
我的意思是,当我在子类中使用 super() 时,java 将如何知道在我的子类中调用哪个构造函数?因为在我的超类中,我有两个没有参数的构造函数; public double getRadius() 和 public double getArea()
【问题讨论】:
-
Circle 的构造函数将命名为
Circle。由于您没有明确声明一个,编译器创建了一个,没有参数。这就是上述所有super调用所使用的内容,因为没有“更好”的适合。