隐藏的super()
A.java
1
class A
2
{
3
int i;
4
A()
5
{
6
i=10;
7
System.out.println("调用父类构造方法");
8
}
9
}
class A2
{3
int i;4
A()5
{6
i=10;7
System.out.println("调用父类构造方法");8
}9
}B.java
1
public class B extends A
2
{
3
int j;
4
B()
5
{
6
j=20;
7
System.out.println("调用子类构造方法");
8
}
9
public static void main(String [] args)
10
{
11
B bObj = new B();
12
System.out.println(bObj.i+" "+bObj.j);
13
}
14
}
public class B extends A2
{3
int j;4
B()5
{6
j=20;7
System.out.println("调用子类构造方法");8
}9
public static void main(String [] args)10
{11
B bObj = new B();12
System.out.println(bObj.i+" "+bObj.j);13
}14
}在B.java的main方法中:
B bObj=new B();
new后面的B()与该类中的构造函数名B()相同,也就是说调用了B()构造函数。
我们看B()构造函数,{}中第一行其实隐藏了super();它的作用是通知父类,告诉A,它有对象产生了,并调用父类A的构造函数。
所以,结果为:
调用父类构造方法
调用子类构造方法
10 20
源自:
http://zhidao.baidu.com/question/21440229.html


浙公网安备 33010602011771号