继承课后作业
2015-11-08 20:36
246 查看
动手实验:继承条件下的构造方法调用
源代码:
classGrandparent
{
publicGrandparent()
{
System.out.println("GrandParentCreated.");
}
publicGrandparent(Stringstring)
{
System.out.println("GrandParentCreated.String:"+string);
}
}
classParentextendsGrandparent
{
publicParent()
{
//super("Hello.Grandparent.");
System.out.println("ParentCreated");
//super("Hello.Grandparent.");
}
}
classChildextendsParent{
publicChild()
{
System.out.println("ChildCreated");
}
}
publicclassTestInherits{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
Childc=newChild();
}
}
运行结果截图:
显式调用GrandParent的另一个构造函数,这句调用代码是第一句。
结论:通过super调用基类构造方法,必须是子类构造方法中的第一个语句。
思考:为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?
构造函数(constructor)是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。
构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。不能反过来调用也是这个原因,因为父类根本不知道子类有神魔变量而且这样一来子类也得不到初始化的父类变量,导致程序运行出错!
构造函数的特点:
1.它的函数名与类名相同;
2.它可以重载;
3.不能指定返回类型,即使是void也不行;
4.虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显示调用。有些时候是一定要显示调用的,只要是父类有带参的构造函数,在子类中就必须显示的调用父类的构造函数,因为子类的构造器在实例化时无法找到父类的构造函数(当父类有自己写的无参构造函数时,子类也不用显示调用)。
源代码:
classGrandparent
{
publicGrandparent()
{
System.out.println("GrandParentCreated.");
}
publicGrandparent(Stringstring)
{
System.out.println("GrandParentCreated.String:"+string);
}
}
classParentextendsGrandparent
{
publicParent()
{
//super("Hello.Grandparent.");
System.out.println("ParentCreated");
//super("Hello.Grandparent.");
}
}
classChildextendsParent{
publicChild()
{
System.out.println("ChildCreated");
}
}
publicclassTestInherits{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
Childc=newChild();
}
}
运行结果截图:
显式调用GrandParent的另一个构造函数,这句调用代码是第一句。
结论:通过super调用基类构造方法,必须是子类构造方法中的第一个语句。
思考:为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?
构造函数(constructor)是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new
构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。不能反过来调用也是这个原因,因为父类根本不知道子类有神魔变量而且这样一来子类也得不到初始化的父类变量,导致程序运行出错!
构造函数的特点:
1.它的函数名与类名相同;
2.它可以重载;
3.不能指定返回类型,即使是void也不行;
4.虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显示调用。有些时候是一定要显示调用的,只要是父类有带参的构造函数,在子类中就必须显示的调用父类的构造函数,因为子类的构造器在
相关文章推荐
- AOP 笔记
- buzzword
- MySQL学习笔记(8)之实体间的联系
- 致曾被选召的孩子们
- 杭电 can you solve this eduation?
- git 放弃本地修改 强制更新
- 安装PyLucene时执行make的错误代码
- 解决硬编码的上传文件的方式及配置文件传值、url传值的中文乱码
- shell scp
- Qt Class之QTableWidget
- Python输入函数:raw_input() 与 input() 的区别
- Java中的join方法个人理解
- 老陈,小石头、
- 仿照微信的界面,即ViewPager+Fragment的结合使用
- hibernate基本类型映射
- UML——用例图
- HDU 2128Tempter of the Bone II
- 为什么MyISAM会比Innodb的查询速度快。
- 基于香蕉派平台的Raspberry Pi操作系统安装与配置
- 室内定位底图是怎样快速生成的?