java构造函数创建对象_java创建对象的5种方式

1、使用new关键字

2、利用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法

3、构造函数的newInstance()方法

4、对象的反序列化

5、对象的clone()方法

下面详细看看这5种方法的简单实现:

1、使用new关键字

public classTest {privateString name;publicTest() {

}publicTest(String name) {this.name =name;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public static voidmain(String[] args) {

Test t1= newTest();

Test t2= new Test("张三");

}

}

2、利用反射

首先通过Class.forName()动态加载类的class对象,然后通过newInstance()方法获得Test对象,这里使用的是上面的Test对象

public static void main(String[] args) throwsException{

String className="com.qml.test";

Class clasz=Class.forName(className);

Test t=(Test)clasz.newInstance();

}

3、构造函数对象的newInstance()方法

类Constructor也有newInstance方法,这一点和Class有点像。从它的名字可以看出它与Class的不同,Class是通过类来创建对象,而Constructor则是通过构造器。依然使用第一个例子中的Test类。

public static void main(String[] args) throwsException {

Constructorconstructor;try{

constructor= Test.class.getConstructor();

Test t=constructor.newInstance();

}catch (InstantiationException |IllegalAccessException|IllegalArgumentException|InvocationTargetException|NoSuchMethodException|SecurityException e) {

e.printStackTrace();

}

}

4、对象反序列化

继承Serializable接口

public class Test implementsSerializable{privateString name;publicTest() {

}publicTest(String name) {this.name =name;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public static void main(String[] args) throwsException {

String filePath= "sample.txt";

Test t1= new Test("张三");try{

FileOutputStream fileOutputStream=

newFileOutputStream(filePath);

ObjectOutputStream outputStream=

newObjectOutputStream(fileOutputStream);

outputStream.writeObject(t1);

outputStream.flush();

outputStream.close();

FileInputStream fileInputStream=

newFileInputStream(filePath);

ObjectInputStream inputStream=

newObjectInputStream(fileInputStream);

Test t2=(Test) inputStream.readObject();

inputStream.close();

System.out.println(t2.getName());

}catch(Exception ee) {

ee.printStackTrace();

}

}

}

5、对象的clone()方法

public static void main(String[] args) throwsException {

Test t1= new Test("张三");

Test t2=(Test) t1.clone();

System.out.println(t2.getName());

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java构造函数的重载指的是在同一个类中定义多个构造函数,它们的参数列表不同,可以有不同的参数类型、不同的参数个数或者参数顺序不同。这样做的目的是为了提供更灵活的对象创建方式,以满足不同的需求。 构造函数重载的语法格式与普通函数重载相同,只是函数名必须与类名相同。例如: ``` public class Person{ private String name; private int age; public Person(){ // 无参构造函数 } public Person(String name){ this.name = name; } public Person(int age){ this.age = age; } public Person(String name, int age){ this.name = name; this.age = age; } } ``` 在上面的代码中,Person类定义了4个构造函数,它们的参数列表分别是无参、字符串类型、整型和字符串类型加整型。通过构造函数重载,我们可以根据不同的参数来创建不同的Person对象。例如: ``` Person person1 = new Person(); // 使用无参构造函数创建对象 Person person2 = new Person("张三"); // 使用字符串类型参数构造函数创建对象 Person person3 = new Person(18); // 使用整型参数构造函数创建对象 Person person4 = new Person("李四", 20); // 使用字符串类型和整型参数构造函数创建对象 ``` 注意,如果我们没有定义任何构造函数Java会默认提供一个无参构造函数。如果我们定义了任何一个构造函数Java就不会再提供默认的无参构造函数了。因此,如果我们需要使用无参构造函数创建对象,就需要显式地定义一个无参构造函数构造函数重载可以帮助我们提供多创建对象方式,使得代码更加灵活和可扩展。同时,构造函数重载也是面向对象编程中的一重要概念,需要我们理解和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值