无参构造器

无参构造器负责创建对象,类的实例域初始化为默认值
如果一个类在编写的时候,系统会提供一个无参数构造器,将所有实例域初始化为默认值
如果一个类在编写的时候,提供了构造器,但是唯独没有无参数构造器,这样的话,在创建对象的时候,如果不传入参数,就会被视为不合法的!

### Java 中默认无构造器使用与定义 在 Java 编程语言中,默认无构造器是由系统自动生成的种特殊方法,用于初始化新创建的对象。当开发者未显式定义任何构造器时,Java 编译器会自动为生成个无数的构造器[^1]。 #### 默认无构造器的行为 如果没有手动定义任何构造器(无论是有还是无),那么系统会在编译阶段为该提供个默认的无构造器。此构造器不接受任何数,并且其主要功能是对对象进行基本的初始化操作[^2]。 然而需要注意的是,旦开发人员在中定义了个或多个带数的构造器,则系统将不再为其生成默认的无构造器[^3]。这意味着此时如果尝试通过 `new 名()` 的方式实例化对象而没有显式声明无构造器的话,将会引发编译错误。 #### 显式定义无构造器 为了能够在已经存在其他形式构造函数的情况下仍然能够利用无构造器来进行对象构建,可以通过如下方式显式地添加个无构造器: ```java public class Example { public Example() { // 显式定义的无构造器 System.out.println("这是个无构造器"); } public Example(String message) { // 定义的个有构造器 System.out.println(message); } } ``` 上述代码片段展示了如何在同中同时拥有无和有两种型的构造器[^4]。这样即使中有其他的构造签名存在,我们依然可以通过调用无版本来创建新的实例。 --- ### 总结 - **默认情况**: 如果没有任何用户定义的构造器,JVM 提供个隐含的公共无构造器。 - **覆盖机制**: 只要定义了至少构造器(无论是否有数),则需要手工编写所有的必要构造器型;否则无法依赖 JVM 自动生成它们。 ```java class MyClassWithConstructor { private String name; // 手动实现的无构造器 public MyClassWithConstructor(){ this.name = "Default Name"; } // 有构造器 public MyClassWithConstructor(String customName){ this.name = customName; } public void displayInfo(){ System.out.println("Object's name is "+this.name); } } // 测试部分 MyClassWithConstructor obj1=new MyClassWithConstructor(); obj1.displayInfo(); MyClassWithConstructor obj2=new MyClassWithConstructor("Custom Object"); obj2.displayInfo(); ``` 以上例子说明了即便有了有构造器之后,只要重新加入无构造器就可以正常使用这两种不同的构造方式进行对象建立.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值