关于super();的作用,望高手解答,谢谢
一般来说创建子类实例时,就会调用父类的构造函数
但是super();也是用于调用父类的构造函数,而且只能放在子类构造函数的第一句,也就是说不能利用super();来改变实例的构造过程啦
class a{
a(){
System.out.println("aaa");
}
}
public class test extends a{
test(){
//super();
}
public static void main(String args[]){
new test();
}
}
在对这个程序注释与不注释掉super();时,反编译出来的结果如下:
C:\java>javac test.java
C:\java>java test
aaa
C:\java>javap -c test
Compiled from "test.java"
public class test extends a{
test();
Code:
0: aload_0
1: invokespecial #1; //Method a."<init>":()V (没有注释的)
4: return
public static void main(java.lang.String[]);
Code:
0: new #2; //class test
3: dup
4: invokespecial #3; //Method "<init>":()V
7: pop
8: return
}
C:\java>javac test.java
C:\java>java test
aaa
C:\java>javap -c test
Compiled from "test.java"
public class test extends a{
test();
Code:
0: aload_0
1: invokespecial #1; //Method a."<init>":()V (注释了的)
4: return
public static void main(java.lang.String[]);
Code:
0: new #2; //class test
3: dup
4: invokespecial #3; //Method "<init>":()V
7: pop
8: return
}
在我看来,这两个结果毫无分别
那么,这个super();到底有什么作用呢?望高手解答,谢谢