-
2008-12-29
Java中的构造器(构造方法)的调用 - [java基础]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
注意:(1)在子类中的缺省构造器可以调用父类的缺省/非缺省构造器,在调用父类的缺省构造器时,
http://allantaylor.blogbus.com/logs/33086015.html
不用写super关键字直接可以调(因为super是隐式的);在调用父类的非缺省构造器时,
必须用super(参数)显示调用。如下面的案例所示:
class Art {
Art(){System.out.println("Art constructor1");}//(1)
Art(int i ) {
System.out.println("Art constructor2");
}
}class Drawing extends Art {
public Drawing(){super(3);}//(2)
public Drawing(int i) {
super(4);
System.out.println("Drawing constructor");
}
}public class E05_Cartoon2 {
public static void main(String args[]) {
new Drawing();//(3)
//new Drawing(3);
}
} ///:~运行结果:
Art constructor2
如果把标记为(2)处的super(3)删除掉,那么会调用父类的缺省构造器。
运行结果是:
Art constructor1
注意:(2)在子类中的非缺省构造器可以调用父类的缺省/非缺省构造器,在调用父类的缺省构造器
时,不需要super关键字直接可以调用;在调用父类的非缺省构造器时,必须用super(参数)显示
调用。看下面的案例class Art {
Art()//(1)
{
System.out.println("Art constructor1");
}
Art(int i ) {
System.out.println("Art constructor2");
}
}class Drawing extends Art {
//public Drawing(){super(4);}//(2)
public Drawing(int i) {
//super(4);//(3)
System.out.println("Drawing constructor");
}
}public class E05_Cartoon2 {
public static void main(String args[]) {
//new Drawing();//(4)
new Drawing(3);
}
} ///:~运行结果:
Art constructor1
Drawing constructor如果把标记为(3)的注释去掉,那么此时就是调用父类的非缺省构造器,
运行结果是:
Art constructor2
Drawing constructor随机文章:
java clone方法使用详解 2009-01-08try-catch-exception-return执行顺序 2009-01-06Collection List Set Map 区别记忆 2009-01-04初始化顺序 2008-12-30类的执行顺序 2008-12-30
收藏到:Del.icio.us







