在子类中的构造函数中使用super(a,b)是把父类的带参数的构造函数调用到子类来执行,还是在父类中执行这个构造方法?请看下面的题目,我对输出的第2行和第4行有疑问
如果super(a,b)是把父类的构造函数调用在子类中运行那就应该是这个结果
所以我对super(a,b)后父类的构造函数到底在哪里执行有疑惑
哪位高手帮我讲解下了 谢谢
class Point{
protected int x,y;
public Point(int a,int b)
{
x=a;
y=b;
System.out.println("point constrator:"+this.tostring());
}
public String tostring()
{return "["+x+","+y+"]";}
}
class Circle extends Point
{
protected double radius;
public Circle(double r,int a,int b)
{ super(a,b);
radius=r;
System.out.println("circle constrator:"+this.tostring());
}
public String tostring()
{return "center"+super.tostring()+"radius="+radius;};
}
public class test
{
public static void main(String[] args)
{
Circle circle1,circle2;
circle1=new Circle(4.5,72,29);
circle2=new Circle(10.0,5,5);
}
}
JAVA结果输出的是
point constrator:center[72,29]radius=0.0
circle constrator:center[72,29]radius=4.5
point constrator:center[5,5]radius=0.0
circle constrator:center[5,5]radius=10.0 为什么不是
point constrator:[72,29]
circle constrator:center[72,29]radius=4.5
point constrator:[5,5]
circle constrator:center[5,5]radius=10.0
如果super(a,b)是把父类的构造函数调用在子类中运行那就应该是这个结果
所以我对super(a,b)后父类的构造函数到底在哪里执行有疑惑
哪位高手帮我讲解下了 谢谢
class Point{
protected int x,y;
public Point(int a,int b)
{
x=a;
y=b;
System.out.println("point constrator:"+this.tostring());
}
public String tostring()
{return "["+x+","+y+"]";}
}
class Circle extends Point
{
protected double radius;
public Circle(double r,int a,int b)
{ super(a,b);
radius=r;
System.out.println("circle constrator:"+this.tostring());
}
public String tostring()
{return "center"+super.tostring()+"radius="+radius;};
}
public class test
{
public static void main(String[] args)
{
Circle circle1,circle2;
circle1=new Circle(4.5,72,29);
circle2=new Circle(10.0,5,5);
}
}
JAVA结果输出的是
point constrator:center[72,29]radius=0.0
circle constrator:center[72,29]radius=4.5
point constrator:center[5,5]radius=0.0
circle constrator:center[5,5]radius=10.0 为什么不是
point constrator:[72,29]
circle constrator:center[72,29]radius=4.5
point constrator:[5,5]
circle constrator:center[5,5]radius=10.0
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货