Java类构造方法中不同类型语句存在限制
来源:互联网 发布:java编写的游戏引擎 编辑:程序博客网 时间:2024/06/08 05:23
Java类构造方法中存在5种类型的语句:super调用基类构造器方法语句,this调用本类构造器方法语句,触发本类"非静态数据成员定义初始化"的语句,触发本类"非静态数据成员初始化语句"的语句,其他语句。
这5种类型语句的“存在和是否显式”情况描述如下:super调用基类构造器方法语句,可显式存在,可隐藏存在,也可不存在;this调用本类构造器方法语句,可显式存在,也可不存在;触发本类"非静态数据成员定义初始化"的语句,可隐藏存在,也可不存在;触发本类"非静态数据成员初始化语句"的语句,可隐藏存在,也可不存在;其他语句,显式存在。
这5种类型语句的存在需要满足以下限制规则:
1、当“this调用本类构造器方法语句”显式存在时,“super调用基类构造器方法语句”,“触发本类'非静态数据成员定义初始化'的语句”,“触发本类'非静态数据成员初始化语句'的语句”都不可存在,否则会在本构造器中执行这3个语句,也会在this调用语句指向的构造器方法中执行这3个语句,导致这3个语句被多次执行,而这是不被允许的。因而,此时,只允许“其他语句”存在。
注意,这个限制解决了以下这样的一个问题:
要求“super调用基类构造器方法语句”必须为本类构造器的第一条程序语句,也要求“this调用本类构造器方法语句”必须为本类构造器的第一条程序语句,那么当两条语句都出现时,谁是第一条呢。以上限制已经使得这种情形不会出现。
2、当“this调用本类构造器方法语句”不存在时,在构造器方法中,“super调用基类构造器方法语句”,“触发本类'非静态数据成员定义初始化'的语句”,“触发本类'非静态数据成员初始化语句'的语句”,“其他语句”都存在(有个特殊情况,当类为Object时,“super调用基类构造器方法语句”不存在)。其中,“super调用基类构造器方法语句”可隐藏存在,也可显式存在;“触发本类'非静态数据成员定义初始化'的语句”,隐藏存在;“触发本类'非静态数据成员初始化语句'的语句”,隐藏存在;“其他语句”,显式存在。
这5种类型语句的“存在和是否显式”情况描述如下:super调用基类构造器方法语句,可显式存在,可隐藏存在,也可不存在;this调用本类构造器方法语句,可显式存在,也可不存在;触发本类"非静态数据成员定义初始化"的语句,可隐藏存在,也可不存在;触发本类"非静态数据成员初始化语句"的语句,可隐藏存在,也可不存在;其他语句,显式存在。
这5种类型语句的存在需要满足以下限制规则:
1、当“this调用本类构造器方法语句”显式存在时,“super调用基类构造器方法语句”,“触发本类'非静态数据成员定义初始化'的语句”,“触发本类'非静态数据成员初始化语句'的语句”都不可存在,否则会在本构造器中执行这3个语句,也会在this调用语句指向的构造器方法中执行这3个语句,导致这3个语句被多次执行,而这是不被允许的。因而,此时,只允许“其他语句”存在。
注意,这个限制解决了以下这样的一个问题:
要求“super调用基类构造器方法语句”必须为本类构造器的第一条程序语句,也要求“this调用本类构造器方法语句”必须为本类构造器的第一条程序语句,那么当两条语句都出现时,谁是第一条呢。以上限制已经使得这种情形不会出现。
2、当“this调用本类构造器方法语句”不存在时,在构造器方法中,“super调用基类构造器方法语句”,“触发本类'非静态数据成员定义初始化'的语句”,“触发本类'非静态数据成员初始化语句'的语句”,“其他语句”都存在(有个特殊情况,当类为Object时,“super调用基类构造器方法语句”不存在)。其中,“super调用基类构造器方法语句”可隐藏存在,也可显式存在;“触发本类'非静态数据成员定义初始化'的语句”,隐藏存在;“触发本类'非静态数据成员初始化语句'的语句”,隐藏存在;“其他语句”,显式存在。
0 0
- Java类构造方法中不同类型语句存在限制
- Java中构造方法的定义限制特点
- 详解Java EE中SQL语句的自动构造方法
- 详解Java EE中SQL语句的自动构造方法
- java中构造函数的存在
- Android JAVA中如何利用泛型使方法动态返回不同类型
- java中构造方法
- Java中类的构造方法
- Java中String类的构造方法
- Java中String类的构造方法
- J2EE中SQL语句自动构造方法
- J2EE中SQL语句自动构造方法
- J2EE中SQL语句自动构造方法
- J2EE中SQL语句自动构造方法
- Java中构造方法、实例方法、类方法的区别
- java 基础的对象、类、构造方法、构造对象、#import语句
- java中构造方法私有化
- java中this语句来调用其他构造方法的规则
- css的background 属性
- ThinkPHP创建应用的一般开发流程及实例
- [leetcode#4]Longest Common Prefix
- 操作系统原理学习总结
- Android 中的 Service 全面总结
- Java类构造方法中不同类型语句存在限制
- Android基础入门教程——1.2 开发环境搭建
- xcode7之后的创建视图方法
- 应用市场建站系统 171cms app下载站源码
- 猜拳游戏
- 修改VMware中Redhat Linux屏幕分辨率
- 面试题题排序,字符串数组按照字母排序,不区分大小写比较
- MVC
- Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP