在面向对象编程中,构造函数是一种特殊的方法,用于在创建对象时初始化对象的属性。通过参数调用构造函数,可以在创建对象时传递初始值,从而使对象具有特定的状态。
构造函数:
参数调用构造函数:
public class Person {
private String name;
private int age;
// 无参构造函数
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 有参构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 和 Setter 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
// 使用无参构造函数创建对象
Person person1 = new Person();
System.out.println(person1); // 输出: Person{name='Unknown', age=0}
// 使用有参构造函数创建对象
Person person2 = new Person("Alice", 30);
System.out.println(person2); // 输出: Person{name='Alice', age=30}
}
}
问题:如果在构造函数中忘记初始化某个成员变量,可能会导致该变量保持默认值(如引用类型的默认值为null,数值类型的默认值为0),从而引发运行时错误。
解决方法:
例如,在上面的Person
类中,如果age
字段不应该为负数,可以在构造函数中添加验证:
public Person(String name, int age) {
this.name = name;
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
this.age = age;
}
这样可以在创建对象时立即捕获并处理非法的年龄值。
领取专属 10元无门槛券
手把手带您无忧上云