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