`

Java中的构造器(构造方法)的调用

    博客分类:
  • j2se
阅读更多

注意:(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类中最重要的一个概念,这篇文档涵盖了,java对象初始化过程中构造器调用的顺序,及作用。

    Java复习题及答案

    3、所有类至少有一个构造器,构造器用来初始化类的新对象,构造器与类同名,返回类型只能为void。 ( ) 4、包是按照目录、子目录存放的,可以在程序中用package定义包,若没有package一行,则表示该文件中的类不...

    JAVA经典继承与父类调用 geter、seter访问器 构造器

    代码中设计了各个类的基类,设置私有成员变量,利用构造器对成员变量初始化,用geter、seter访问器设置、获取成员变量的值。继承基类并创建对象,在子类中调用父类方法。

    java基础补足和thinking In Java学习.rar

    默认构造器又称为无参构造器,在没有其他构造器的情况下,JAVA会帮助类生成一个默认的构造器即无参构造器,可以被省略不写。 5.4 this关键字 1. this关键字可以指当前对象,即当前类的对象 2. this关键字在同一...

    java 类的相关代码

    d 声明PersonApp类,在其中的main方法中分别声明Person、Student、Teacher类型的变量,并通过构造方法初始化,然后显示各自的信息。 2 声明一个Shape接口,其中有计算面积(area)、周长(perimeter)的方法,有以下...

    Java开发技术大全(500个源代码).

    invokeConstructor.java 利用反射机制调用构造器 invokeMethod.java 利用反射机制调用成员方法 listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods....

    java源码包---java 源码 大量 实例

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA_API1.6文档(中文)

    javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...

    java api最新7.0

    javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...

    Thinking in java4(中文高清版)-java的'圣经'

    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 ...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java源码包2

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java静态工厂方法详细解析——使用静态工厂方法代替构造器

    对于类而言,在我们需要获取一个实例时,最传统的方法都是通过new新建一个对象,这是jvm通过调用构造函数帮我们实例化出来的对象。而静态工厂方法则是另外一种不通过new来获取一个实例的方法,我们可以通过一个类中...

    java源码包4

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java源码包3

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java开源包1

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    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)...

    Java 1.6 API 中文 New

    javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 ...

Global site tag (gtag.js) - Google Analytics