`
isiqi
  • 浏览: 16030788 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java语言基础:对象的初始化

阅读更多

1. 如果基类存在默认构造函数,则在子类构造之前,会先调用基类的默认构造函数:

2. 如果基类只有带参数的构造函数,子类必须在自己的构造函数中通过super(...)显式调用该基类构造函数:

3. 以上只讲了最简单的构造函数调用顺序,其实一个对象的真正的初始化过程应该是:

  1. 将对象的存储空间初始化为二进制的0.
  2. 先递归到最上层的基类去,将最上层的基类作为当前类。
  3. 对于当前类:
    1. 按声明顺序调用成员变量的初始设置代码。
    2. 调用构造函数。
  4. 接着将下一层继承类作为当前类,继续步骤3

    先看下面的代码:

    初始化过程大概是这样的:

    1. 先从C递归到B,再从B递归到A。
    2. A没有成员变量,所以A的构造函数被调用。
    3. 接到回到B,B有一个D类的成员有初始化,因此D的构造函数被调用。
    4. 接着B的构造函数被调用。
    5. 最后回到C,C的构造函数被调用。

      所以输出应该是:

      A create

      D create

      B create

      C create

      4. 必须小心在构造函数中调用虚函数(在JAVA里普通函数都是虚的)的隐患,特别是在基类的构造函数,因为此时继承类的成员可能还没有初始完毕:

      A的构造函数调用了proc,此时B的构造函数还没有被调用,因此i还没有被赋为10,最终输出结果是0。

      5. 由于Java对象都是通过垃圾回收机制清理对象,因此Java的类没有析构函数,遇到需要清理类中资源的问题时,可以自己声明一个函数,如Dispose,在适当的时候调用之。

      分享到:
      评论

      相关推荐

        Java中对象的初始化

        《Java程序设计基础教程》按内容分成五篇:Java 语言入门篇、面向对象篇、数据流应用篇、Java GUI编程篇和高级应用篇,共有二十四讲组成。

        【Java语言基础】初始化块

        文章目录【Java语言基础】初始化块使用初始化块静态初始化块总结代码 【Java语言基础】初始化块 初始化块又称为代码块。属于类中的第四大成员。本质上是一个方法,它也有方法体,但没有方法名,没有参数,没有返回,...

        Java程序设计基础:创建String字符串.pptx

        一般程序需要处理大量文本数据Java语言的文本数据被保存为字符或字符串类型。 若干个字符在计算机里面如何存储? 如何引用呢? 引入 例如 “320106199503150101” String类:连接、查找、比较等 引入 String是Java库...

        Java语言程序设计

        2.2.1 类的声明 2.2.2 对象的声明与引用 2.2.3 数据成员 2.2.4 方法成员 2.2.5 类的组织——包的概念 2.2.6 类的访问控制 2.2.7 类成员的访问控制 2.3 对象初始化和回收 2.3.1 构造方法 2.3.2 内存回收技术...

        Java语言基础下载

        Hibernate的初始化 687 访问Hibernate的Session接口 688 Hibernate工作原理图 691 内容总结 693 独立实践 693 第三十五章: 映射继承关系 694 学习目标 694 域模型关系 695 继承关系树的每个具体类对应一个表 696 ...

        【Java语言基础】final关键字

        【Java语言基础】final关键字 修饰词:final 最终的最后的 final关键字可用于修饰符,变量和方法,用于表示它修饰的类,方法和方法不可改变。 final 最终的最后的 final修饰变量时,表示该变量一旦获得了初始值之后...

        Java语言基础-面向对象

        Java语言基础-面向对象 Java语言是面向对象的编程语言 对象 对象:是构成系统的最基本的单位 属性:描述对象的静态特征(成员变量) 行为:描述对象的动态特征(成员方法和构造方法) 类是模型,对象是实例;类是...

        java初始化和清理

        Java 的初始化问题和其他高级语言类似。一个明显不一样的地方是体现在它的类加 载过程。传统的编程语言包括C++等,程序是作为启动过程的一部分立刻被加载,而Java 的 类加载只在需要使用程序代码时才会被加载(每个...

        《Java程序设计案例教程》教学课件02Java语言基础.pptx

        模块2 Java语言基础 《Java程序设计案例教程》教学课件02Java语言基础全文共48页,当前为第1页。 学习目标 01 掌握标识符、关键字、分隔符、变量和常量的含义和使用方法。 02 了解Java注释的格式和代码书写风格。 03...

        精通 Hibernate:Java 对象持久化技术详解(第2版).part2

        6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法  6.4.1 increment标识符生成器  6.4.2 identity标识符生成器  6.4.3 sequence标识符...

        Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

        创建对象包括声明、实例化和初始化三方面的内容。通常的格式为 : 1. 声明对象 对象声明实际上是给对象命名,也称定义一个实例变量。对象声明的一般格式为: type name 其中,type 是一个类的类名,用它声明的对象将...

        精通Hibernate:对象持久化技术第二版part3

        6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 ...

        精通hibernate:对象持久化技术孙卫琴第二版part2

        6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 ...

        Java基础入门及提高.pdf

        第4 章:初始化和清除 第5 章:隐藏实现过程 第6 章:类再生 第7 章:多形性 第8 章:对象的容纳 第9 章:违例差错控制 第10 章:Java IO 系统 第11 章:运行期类型鉴定 第12 章:传递和返回对象 第13 章:创建窗口...

        北航网络教育JAVA语言与面向对象程序设计单选题及答案.doc

        JAVA语言与面向对象程序设计单选题 applet的主要方法 在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( )方法来完成主类实例的初始化工作。 A.A. start( ) B. B. stop( ) C. C. init( ) D. D. paint...

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

        对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...

        java语言操作系统课程设计模拟进程管理系统源码.zip

        ①创建:初始化刚建立的进程对象,并插入就绪队列; ②撤销:根据获取的交互信息在队列中查找要删除的进程,将对象移除即可; ③阻塞、唤醒:利用系统提供的线程类模仿进程,直接启动相关的系统调用即可使线程暂停或...

        Java变量初始化的时机

        对于JAVA中变量的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略。当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙。而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽。...

        建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。

        还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。 编程环境:vs2010,语言:...

        java 语言PPT

        Java介绍 面向对象基本理论 Java基本结构 类和对象 初始化和清除 多态性

      Global site tag (gtag.js) - Google Analytics