new
关键字创建数组实例,并将其赋值给类的成员变量。,,“java,public class MyClass {, private int[] myArray;,, public MyClass(int size) {, myArray = new int[size];, },},
“在Java中,构造器是一个特殊的方法,用于初始化一个类的对象,构造器的名称与类名相同,没有返回类型(即使是void也不需要),并且可以有参数,构造器的主要作用是创建对象并对其进行初始化。
构造器的使用
1、无参构造器
无参构造器是最简单的构造器,它没有任何参数,当创建一个对象时,如果没有提供任何参数,那么无参构造器将被调用。
public class Person { private String name; private int age; // 无参构造器 public Person() { name = "未知"; age = 0; } }
2、有参构造器
有参构造器接受一个或多个参数,这些参数用于初始化对象的属性,当创建一个对象时,如果提供了参数,那么有参构造器将被调用。
public class Person { private String name; private int age; // 有参构造器 public Person(String name, int age) { this.name = name; this.age = age; } }
3、重载构造器
在同一个类中,可以有多个构造器,它们具有相同的名称但参数列表不同,这就是构造器的重载。
public class Person { private String name; private int age; // 无参构造器 public Person() { name = "未知"; age = 0; } // 有参构造器1 public Person(String name) { this.name = name; age = 0; // 默认年龄为0 } // 有参构造器2 public Person(int age) { this.name = "未知"; // 默认姓名为"未知" this.age = age; } }
4、链式构造器
链式构造器是指在一个构造器中调用同一个类的另一个构造器,这样可以简化代码,提高可读性。
public class Person { private String name; private int age; private String address; // 有参构造器1(包含地址) public Person(String name, int age, String address) { this.name = name; this.age = age; this.address = address; // 调用另一个有参构造器2(只包含地址)来初始化address属性 } }
构造器的注意事项
1、构造器不能被继承,因此子类的构造器必须通过调用父类的构造器来初始化父类的属性,可以使用super()
关键字来实现这一点。
public class Student extends Person { private String school; private String major; // 子类构造器调用父类构造器来初始化父类属性(Person)和子类属性(School, Major) public Student(String name, int age, String school, String major) { super(name, age); // 调用父类Person的有参构造器1来初始化name和age属性 this.school = school; // 初始化子类属性school和major属性(省略了super()调用) this.major = major; // 省略了super()调用,因为父类Person没有与这两个属性相关的构造器(如果有,需要添加相应的super()调用) } }
2、如果一个类没有定义任何构造器,那么编译器会自动为该类生成一个默认的无参构造器,如果已经定义了一个或多个构造器,那么编译器将不再自动生成默认的无参构造器,如果需要使用默认的无参构造器,需要在类中显式地定义一个。
public class Person { // 没有显式定义无参构造器,编译器将不会自动生成默认的无参构造器(如果没有其他构造器) private String name; // ...其他属性和方法... }
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/154651.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复