构造方法及其调用

本文详细介绍了Java中构造方法的知识,包括构造方法的作用、何时自动调用、如何调用不同参数的构造方法,以及构造方法的权限对其调用的影响。通过多个示例展示了在同一个类中、构造方法权限改变以及在不同类中调用构造方法时的运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造方法知识点:
1、构造方法就是实例化对象时调用的方法,构造方法的调用是在创建一个对象时使用new操作进行的,用于完成对象的初始化工作。
2、当类定义中的构造方法都不是无参数构造方法时,编译器也不会为类设置一个默认无参数构造方法。如果此时无参数构造方法实例化一个对象,编译器
会报错。只有当类中没有定义任何构造方法时,编译器才会自动创建一个不带参数的构造方法
3、一个类被实例化的同时就会自动运行相应的构造方法,即便你不写,系统也会创建一个默认的构造方法。

4、在构造方法里可以调用除自身外的其他方法(静态的非静态的都可以)

一、在同一个类中

调用1

Test2.java

package Test6;

public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2();
}
}

程序运行结果:


调用2

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2("1",2);
}
}

程序运行结果:


调用3

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2("1","2","3");
}
}

程序运行结果:


二、现在把无参数构造方法权限改为private

Test2.java

package Test6;

public class Test2 {
//无参数构造方法
private Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2();
}
}

程序运行结果:


三、当实例化对象和构造方法不在同一个类中而且无参数构造方法的权限为public时

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
}

Main_00.java

package Test6;

public class Main_00 {
public static void main(String[] args) {
Test2 test2=new Test2();
}
}

程序运行结果


四、

当实例化对象和构造方法不在同一个类中而且无参数构造方法的权限为private时

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
private Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
}

Main_00.java

package Test6;

public class Main_00 {
public static void main(String[] args) {
Test2 test2=new Test2();
}
}

程序运行结果


总结:由此看出,当在同一类中时,无论权限如何,都能够根据参数的不同进行调用构造方法。当在不同的类中时,如果权限设置为private私有的时,此私有构造方法不能被调用,转而去调用了可变参数数量的构造方法了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值