首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于类的继承调用有关问题

2013-09-12 
关于类的继承调用问题class A{int x,yA(int xx,int yy){xxxyyySystem.out.println(A+x+,+y)}}pu

关于类的继承调用问题


class A
{
int x,y;
A(int xx,int yy)
{
x=xx;
y=yy;
System.out.println("A"+x+","+y);
}
}
public class B extends A
{
A b=new A(1,2);
B(int x, int y) 
{
super(3,4);
this.x=x*x;
this.y=y*y;
System.out.println("B");
}
A a=new A(7,8);
public static void main(String[] args) 
{
int x=10,y=20;
A a=new B(x,y);
}
}

输出的顺序是
A3,4
A1,2
A7,8
B
想请教一下为什么这里最后才输出B,上面的调用顺序是怎么样的
[解决办法]
对象的实例化顺序是先执行类中成员变量,再执行构造函数,如果有父类的话,在这之前又要最先实例化父类,怎么知道有没有父类,就看是否调用super函数了。
其实如果不显示的调用super函数,构造函数也是会调用默认的无参函数super(),
所以如果父类中没有无参的构造函数,子类中的构造函数是必须要显示的调用有参的super函数的。

热点排行