`
zhangle2612
  • 浏览: 23362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

继承和成员对象初始化

 
阅读更多
我们初始化对象时,编译器会强制初始化基类,并且需要在构造器起始处就这么做,但是编译器并不监督我们必须将成员对象也进行初始化,因此我们必须时刻注意类的成员对象的初始化:
初始化类的引用对象,实例变量可以再下列位置进行:
1.在定义对象的地方,这意味着它们总是能够在构造器被调用之前就被初始化
public class Dog{
    String  name = "HashQ";//在定义它的地方就初始化
}
2.在类的构造器中
public class Dog{
    Sting name ;
    publid Dog(){
         name = "HashQ";
    }
}
3.在要使用这些对象之前进行初始化,这种方式称为惰性初始化。在生产某类的对象时,不需要对其类中所有实例引用对象都进行初始化,这种方式可以减少额外的负担
public class Dog{
    Sting name ;
    publid Dog(){
       
    }
    public String toString(){
         if(name==null){
             name = "HashQ";
          }
          return name;
    }
}
4.使用实例初始化


继承时,构造子类对象时,会先调用基类的构造器,不管子类构造时是否带有参数,都会调用父类的默认构造器,即无参构造器
如果我们给父类写了构造器,但是没有重写无参构造器,那我们在构造子类对象时,就会得到一个编译错误,找不到相匹配的构造器,这个时候我们可以在子类的构造器中利用super(parameters);跟上对应的参数调用我们写的基类构造器,或者写一个无参的基类构造器就可以解决问题了,一般我们如果给某个类写构造器,都会先重写一个无参构造器
分享到:
评论

相关推荐

    virtio_blk初始化流程

    类型定义中不一定非要包含完整的类Class和实例instance的定义,如果没有新增的成员,则完全可以从父类型继承过来,qemu-kvm初始化的代码会自动找到父类型并使用父类型的定义。 type的继承关系通过parent指针实现:...

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

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

    包含string对象的结构与memset初始化操作

    memset初始化std::string对象时,按字节顺序将std::string对象所在空间清零,破坏了std::string对象的成员结构,使Myroxy指针资源变为野指针,操作其迭代器会出现不可预知的异常,在存储字符串时可能分配了不必要的...

    Java开发者文档,分享日常学习的一些小知识点 .rar

     2、继承时,对象的初始化过程  (1) 主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。  (2) 主类静态成员的初始化。  (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一...

    《java面向对象程序设计-继承和多态》教案.doc

    圆点符号用于访问对象的成员,构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰...

    C++结构体实例和类实例的初始化

    结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的。  一、若类和结构体所有数据成员均为public型...

    vc++实验六 单基继承

    2、设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的...

    05 对象的初始化和清理.rar_C++

    包含const修饰成员函数;this指针的使用;纯虚函数和抽象类;构造函数的分类及调用...继承;静态成员;拷贝构造函数调用;虚析构和纯虚析构;友元;运算符重载;多态及多态的三个案例:计算器类、制作饮品、电脑组装。

    Java面向对象程序设计方案练习题(1).doc

    为MyTime类定义构造方法 以方便创建对象时初始化成员变量。 再定义diaplay方法 用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) ...

    实验三test4_继承和派生_C++_

    声明一个Person,包含姓名name和年龄age等私有数据成员以及相关的成员函数;由它派生出领导类Leader,包含职务position和部门department私有...在主函数中测试各类对象初始化和信息输出,查看是否会出问题?如何解决?

    易语言面向对象编程 面向对象学习

    2.“_初始化” 与 “_销毁” 5 三.一个更丰富的“员工”类 7 四.再说继承 9 五.类的多态性 11 六.虚拟方法 13 七.总结 14 (1)对象的构造: 14 (2)对象的析构: 14 (3)类的封装: 15 (4)继承: 15 (5...

    c++ 子类构造函数初始化及父类构造初始化的使用

    因此,在创建子类对象时,为了初始化从父类中继承来的成员变量,编译器需要调用其父类的构造函数。如果子类的构造函数没有显示地调用父类的构造函数,则默认调用父类的无参构造函数,至于什么事显式调用,在下面会...

    类的继承与多态性

    由圆和高多重派生掌握类的继承与派生类关系以及实现方法,理解类的层次结构;...掌握派生类构造函数初始化基类成员和对象成员的方法;理解赋值兼容规则,掌握派生类的复制构造函数和赋值运算符的定义

    C++ 面向对象程序设计 继承与派生

    C++,多继承,虚继承,聚合类,举例,中学生类派生出大学生类和研究生类,大学生类的属性还包括班级、专业、系;研究生类的属性还包括研究方向...定义构造函数(初始化所有属性)和析构函数以及数据成员的设置和输出。

    C++和面向对象数值计算

    2.3.1 声明和初始化 2.3.2 赋值语句 2.3.3 复合赋值语句 2.3.4 增值减值语句 2.3.5 复合语句 2.3.6 条件语句 2.3.7 循环语句 2.4 斐波纳契数 2.5 练习 第3章派生类型 3.1 常量和宏 3.2...

    深度探索模C++对象模型PDF

    2.4 成员们的初始化队伍(Member Initialization List) 第3章 Data语意学(The Semantics of Data) 3.1 Data Member的绑定(The Binding of a Data Member) 3.2 Data Member的布局(Data Member Layout) 3.3 ...

    JAVA基础知识精华总结 收藏

    在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的...

    c++面向对象复习题答案版.doc

    4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 把对象的每个数据成员的值都复制到新建立的对象中)。 5.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到...

    深度探索C++对象模型 超清版

    2.4 成员们的初始化队伍(Member Initialization List) 第3章 Data语意学(The Semantics of Data) 3.1 Data Member的绑定(The Binding of a Data Member) 3.2 Data Member的布局(Data Member Layout) 3.3 ...

    【04-面向对象(上)】

    •初始化块和构造器:初始化块总在构造器之前执行,初始化块不能接受形参。 静态初始化块 •用static修饰的初始化块为静态初始化块,由于是静态的,所以是属于类,当类加载时,就执行静态初始化块 , ...

Global site tag (gtag.js) - Google Analytics