注意:(1)在子类中的缺省构造器可以调用父类的缺省/非缺省构造器,在调用父类的缺省构造器时,
不用写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
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhu_apollo/archive/2007/11/09/1875810.aspx
分享到:
相关推荐
java构造方法是java类中最重要的一个概念,这篇文档涵盖了,java对象初始化过程中构造器调用的顺序,及作用。
3、所有类至少有一个构造器,构造器用来初始化类的新对象,构造器与类同名,返回类型只能为void。 ( ) 4、包是按照目录、子目录存放的,可以在程序中用package定义包,若没有package一行,则表示该文件中的类不...
代码中设计了各个类的基类,设置私有成员变量,利用构造器对成员变量初始化,用geter、seter访问器设置、获取成员变量的值。继承基类并创建对象,在子类中调用父类方法。
默认构造器又称为无参构造器,在没有其他构造器的情况下,JAVA会帮助类生成一个默认的构造器即无参构造器,可以被省略不写。 5.4 this关键字 1. this关键字可以指当前对象,即当前类的对象 2. this关键字在同一...
d 声明PersonApp类,在其中的main方法中分别声明Person、Student、Teacher类型的变量,并通过构造方法初始化,然后显示各自的信息。 2 声明一个Shape接口,其中有计算面积(area)、周长(perimeter)的方法,有以下...
invokeConstructor.java 利用反射机制调用构造器 invokeMethod.java 利用反射机制调用成员方法 listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods....
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...
javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...
2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中的别名问题 3.5 ...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
对于类而言,在我们需要获取一个实例时,最传统的方法都是通过new新建一个对象,这是jvm通过调用构造函数帮我们实例化出来的对象。而静态工厂方法则是另外一种不通过new来获取一个实例的方法,我们可以通过一个类中...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
7.9.4 在构造方法中调用构造方法 184 7.10 方法大汇总 185 7.10.1 本例中用到的类 186 7.10.2 使用例程将本章的知识穿起来 189 7.11 小结:多方位理解Java方法 191 7.12 习题 192 第8章 Java中的包(Package)...
javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...