当前位置: 首页 > news >正文

手机网站和电脑网站打开网站搜索

手机网站和电脑网站,打开网站搜索,网站空间是什么意思,比较好的做网站公司什么情况下存在默认构造函数 说明 如果一个Java类没有显式包含构造函数的声明,那么隐含着有一个默认构造函数。 示例 定义一个类B,没有显式声明构造函数,所以存在一个默认构造函数: package com.thb;public class B {public …

什么情况下存在默认构造函数

说明

如果一个Java类没有显式包含构造函数的声明,那么隐含着有一个默认构造函数。

示例

定义一个类B,没有显式声明构造函数,所以存在一个默认构造函数:

package com.thb;public class B {public void method() {}
}

定义一个类C,显式声明了一个带参数的构造函数,所以就不存在默认构造函数:

package com.thb;public class C {private String msg;public C(String msg) {this.msg = msg;}public void method() {}
}

定义一个类Test1 ,调用类B和类C:

package com.thb;public class Test1 {public static void main(String[] args) {// 类B没有声明构造函数,所以会隐含着有一个默认构造函数B b = new B();b.method();// 如果去掉下面代码前面的注释就会编译出错,因为类C中已经明确声明了一个带参数的构造// 函数,就不会有默认构造函数了// C c = new C();  C c = new C("hello");  // 调用类C声明的构造函数c.method();		}

默认构造函数的形式

一个顶层类、成员类、局部类的默认构造函数形式如下:

默认构造函数的访问修饰符

说明

默认构造函数的访问修饰符和类的访问修饰符相同;如果类没有显式声明访问修饰符,那么默认构造函数是包的访问修饰符。

示例—类用public修饰

定一个类B,用public修饰,没有声明构造函数,所以存在一个默认构造函数:

package com.thb;public class B {public void method() {}
}

打开类B编译后的class文件,可以发现,因为类B的访问控制修饰符是public,所以默认构造函数的访问控制修饰符也是public:

// Compiled from B.java (version 18 : 62.0, super bit)
public class com.thb.B {// Method descriptor #6 ()V// Stack: 1, Locals: 1public B();0  aload_0 [this]1  invokespecial java.lang.Object() [8]4  returnLine numbers:[pc: 0, line: 3]Local variable table:[pc: 0, pc: 5] local: this index: 0 type: com.thb.B// Method descriptor #6 ()V// Stack: 0, Locals: 1public void method();0  returnLine numbers:[pc: 0, line: 5]Local variable table:[pc: 0, pc: 1] local: this index: 0 type: com.thb.B
}

示例—类没有显式声明访问控制修饰符

定义类D,没有显式声明访问控制修饰符,即表示是包访问控制:

package com.thb;class D {}

打开类D编译后的class文件,可以发现,默认构造函数也没有注明访问控制修饰符,即是包访问控制:

// Compiled from D.java (version 18 : 62.0, super bit)
class com.thb.D {// Method descriptor #6 ()V// Stack: 1, Locals: 1D();0  aload_0 [this]1  invokespecial java.lang.Object() [8]4  returnLine numbers:[pc: 0, line: 3]Local variable table:[pc: 0, pc: 5] local: this index: 0 type: com.thb.D
}

默认构造函数没有形式参数(非private的内部成员类除外)

说明

默认构造函数没有形式参数,非private的内部成员类除外。
非private的内部成员类的默认构造函数有一个形式参数,这个形式参数类型是包裹内部成员类的外部类。

示例:非private的内部成员类的默认构造函数

定义一个类E,在其内部定义一个非private的成员类AnotherInE :

package com.thb;public class E {class AnotherInE {}
}

打开类E 编译后的class文件,可以发现它有一个没有形式参数的默认构造函数:

// Compiled from E.java (version 18 : 62.0, super bit)
public class com.thb.E {// Method descriptor #6 ()V// Stack: 1, Locals: 1public E();0  aload_0 [this]1  invokespecial java.lang.Object() [8]4  returnLine numbers:[pc: 0, line: 3]Local variable table:[pc: 0, pc: 5] local: this index: 0 type: com.thb.EInner classes:[inner class info: #17 com/thb/E$AnotherInE, outer class info: #1 com/thb/Einner name: #19 AnotherInE, accessflags: 0 default]Nest Members:#17 com/thb/E$AnotherInE
}

打开内部类AnotherInE 编译后的class文件,可以发现内部成员类的默认构造函数有一个形式参数,类型是包裹它的类E:

// Compiled from E.java (version 18 : 62.0, super bit)
class com.thb.E$AnotherInE {// Field descriptor #6 Lcom/thb/E;final synthetic com.thb.E this$0;// Method descriptor #8 (Lcom/thb/E;)V// Stack: 2, Locals: 2E$AnotherInE(com.thb.E arg0);0  aload_0 [this]1  aload_1 [arg0]2  putfield com.thb.E$AnotherInE.this$0 : com.thb.E [10]5  aload_0 [this]6  invokespecial java.lang.Object() [12]9  returnLine numbers:[pc: 0, line: 5]Local variable table:[pc: 0, pc: 10] local: this index: 0 type: com.thb.E.AnotherInEInner classes:[inner class info: #1 com/thb/E$AnotherInE, outer class info: #22 com/thb/Einner name: #24 AnotherInE, accessflags: 0 default]Nest Host: #22 com/thb/E
}

默认构造函数没有throws 子句

默认构造函数体的内容

说明

如果声明的是基本类Object,那么默认构造函数体是空的。如果声明的是其它的类,在默认构造函数体内调用父类的没有形式参数的构造函数。

示例----在子类的默认构造函数体内调用父类的没有形式参数的构造函数

定义类B:

package com.thb;public class B {public void method() {}
}

定义B的子类BB:

package com.thb;public class BB extends B {}

打开类BB编译后的class文件,可以发现它的默认构造函数体内调用父类B的没有形式参数的构造函数:

// Compiled from BB.java (version 18 : 62.0, super bit)
public class com.thb.BB extends com.thb.B {// Method descriptor #6 ()V// Stack: 1, Locals: 1public BB();0  aload_0 [this]1  invokespecial com.thb.B() [8]4  returnLine numbers:[pc: 0, line: 3]Local variable table:[pc: 0, pc: 5] local: this index: 0 type: com.thb.BB
}

编译出错示例—子类没有显式定义造函数,但父类没有这样一个构造函数:无形式参数并且无throws 子句

定义一个类B,显式定义了一个带形式参数的构造函数,但没有定义无形式参数且没有throws 子句的构造函数:

package com.thb;public class B {private String name;public B(String name) {this.name = name;}public void method() {}
}

定义类B的子类BB,BB中没有显式定义构造函数,编译出错:
在这里插入图片描述
在这里插入图片描述

http://www.hkea.cn/news/944576/

相关文章:

  • 网站怎么做网站地图重庆网站制作公司哪家好
  • wordpress改地址后打不开seo品牌优化整站优化
  • 网页设计师证书含金量高吗百度网络优化
  • 咸阳网站开发长沙seo优化公司
  • 网站通cms国内十大搜索引擎排名
  • centos7安装 wordpress网站如何进行seo
  • 设计师灵感网站美国今天刚刚发生的新闻
  • 重庆南岸营销型网站建设公司推荐竞价sem托管
  • 深圳做二维码网站建设什么是互联网营销
  • 网易企业邮箱收费标准百色seo关键词优化公司
  • 做网站的财务需求张北网站seo
  • 北京赛车彩票网站怎么做佛山本地网站建设
  • 门户网站的建设方式有哪些网络推广引流
  • 做中东服装有什么网站免费seo刷排名
  • 做网站用java还是c语言百度竞价推广培训
  • 做动画视频的网站市场监督管理局官网入口
  • 做bbs网站教程军事新闻最新消息今天
  • 在哪儿可以找到网站开发的需求搜索引擎优化介绍
  • 成都网站建设代理加盟网络运营培训班多少钱
  • 太原开发网站公司站长工具端口扫描
  • 域控制网站访问自媒体视频发布平台
  • 广西住房和城乡建设委员会网站湖南网站营销seo多少费用
  • 关键词推广名词解释百度竞价关键词怎么优化
  • 群辉服务器做网站网络优化的内容包括哪些
  • 做淘客的网站岳阳seo
  • 网吧设计方案seox
  • 谁做网站市场营销专业
  • 慈溪外贸公司网站网络营销就业前景和薪水
  • 电商网站建设实训报告长沙网站seo推广公司
  • 阿里云ecs怎么建网站吉林网站seo