java基础案例:继承中子父类构造函数的特点
2018-02-25 21:49
253 查看
public class Extends3_Demo
{
public static void main(String[] args)
{
Zi z = new Zi();
}
}
/*
子父类中的构造函数的特点:
在子类构造对象时,发现,访问子类构造函数时,父类也运行了
是因为:在子类的构造函数中第一行有一个默认隐式语句,super();
子类的实例化过程,子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
为什么子类实例化的时候要访问父类中的构造函数呢?
那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,
要先看父类是如何对自己的内容进行初始化的。
所以子类在构造对象时,必须访问父类中的构造函数。
为了完成这个必须的动作,就在子类的构造函数中默认加入了super()语句。
如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。
注意:super语句必须要定义在子类构造函数的第一行,因为父类的初始化动作要先完成。
*/
class Fu
{
Fu(int x)
{
System.out.println("Fu类构造函数");
}
}
class Zi extends Fu
{
Zi()
{
super(5); //要父类的构造函数不是空参数,那super就要自定义
//这里有一句隐式的super(); //调用的就是父类中的空参数的构造函数
System.out.println("Zi类的构造函数");
}
}
/*
一个对象实例化过程:
Zi z = new Zi();
1、JVM对读取指定的路径下的Zi.class文件,并加载经内存。并会先加载Zi的父类(如果有直接父类的情况下)。
2、在堆内存中开辟空间,分配地址。
3、并在对象空间中,对对象中的属性进行默认初始化。
4、调用对应的构造函数进行初始化。
5、在构造函数中,第一行会先调用父类中构造函数进行初始化。
6、父类初始化完毕后,再对子类的属性进行显示初始化。
(通过super()初始化父类内容时,子类的成员变量并未显示初始化,等super()父类初始化完毕后才进行子类的成员变量显示初始化)
7、再进行子类构造函数的特定初始化。
8、初始化完毕后,将地址值给引用变量。
*/
{
public static void main(String[] args)
{
Zi z = new Zi();
}
}
/*
子父类中的构造函数的特点:
在子类构造对象时,发现,访问子类构造函数时,父类也运行了
是因为:在子类的构造函数中第一行有一个默认隐式语句,super();
子类的实例化过程,子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
为什么子类实例化的时候要访问父类中的构造函数呢?
那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,
要先看父类是如何对自己的内容进行初始化的。
所以子类在构造对象时,必须访问父类中的构造函数。
为了完成这个必须的动作,就在子类的构造函数中默认加入了super()语句。
如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。
注意:super语句必须要定义在子类构造函数的第一行,因为父类的初始化动作要先完成。
*/
class Fu
{
Fu(int x)
{
System.out.println("Fu类构造函数");
}
}
class Zi extends Fu
{
Zi()
{
super(5); //要父类的构造函数不是空参数,那super就要自定义
//这里有一句隐式的super(); //调用的就是父类中的空参数的构造函数
System.out.println("Zi类的构造函数");
}
}
/*
一个对象实例化过程:
Zi z = new Zi();
1、JVM对读取指定的路径下的Zi.class文件,并加载经内存。并会先加载Zi的父类(如果有直接父类的情况下)。
2、在堆内存中开辟空间,分配地址。
3、并在对象空间中,对对象中的属性进行默认初始化。
4、调用对应的构造函数进行初始化。
5、在构造函数中,第一行会先调用父类中构造函数进行初始化。
6、父类初始化完毕后,再对子类的属性进行显示初始化。
(通过super()初始化父类内容时,子类的成员变量并未显示初始化,等super()父类初始化完毕后才进行子类的成员变量显示初始化)
7、再进行子类构造函数的特定初始化。
8、初始化完毕后,将地址值给引用变量。
*/
相关文章推荐
- java学习总结五:继承中子父类的构造函数
- 学习笔记——继承中子父类变量,函数,构造函数的特点
- java基础案例:继承中成员的特点
- JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- java基础案例:继承父类并实现接口
- 黑马程序员_Java基础_面向对象,封装,继承,单例设计模式,构造函数,构造代码块
- java继承中构造函数的特点
- Java对象的构造过程---子类继承父类时(非)静态块及构造函数等的执行顺序
- C++中类的继承与Java中的不同,C++的派生类不能继承父类的构造函数和析构函数(不一定正确)
- java子类继承父类构造函数
- 子类继承父类,构造函数的特点 super()
- java中子类继承父类时是否继承构造函数呢?
- java基础案例:继承概述与定义
- 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解
- 黑马程序员_5JAVA基础 继承 final的用法以及抽象类的特点
- java中子类继承父类时是否继承构造函数呢?
- java中子类继承父类时是否继承构造函数
- 2018/01/07JAVA 基础 / 接口与继承:对接口与实现类、子类与父类的关系の理解
- Java子类和父类的构造函数继承的问题分析