构造方法的定义:
- 类中必须至少有一个构造方法,默认无参构造
- 名称与类名称保持一致
- 不设置任何的返回值类型
- 构造方法是是实例化new一个对象的时候自动调用的
如果自己定义了构造方法,则不会自动生成无参构造方法,构造方法的定义可以根据自己的需求定义多个,类似于方法的重载。
构造方法的使用示例
class Person {
private String name; // 人的属性名字
private int age; // 人的属性年龄
// 定义构造方法,方法名与类名一致,且无返回值
public Person(String n, int a) {
name = n;
age = a;
}
// 定义一个参数的构造方法
public Person(String n ) {
name = n;
}
public void showInfo() {
System.out.println("name: " + name + "\nage: " + age);
}
}
public class Demo {
public static void main(String[] args) {
Person person1 = new Person("demo", 12); // 实例化对象
person1.showInfo();
Person person2 = new Person("demo2");
person2.showInfo();
}
}
此时我们自己定义了构造方法,则不会自动生成无参构造,如果实例化使用无参构造,就会报错。如果想要我们的类拥有无参构造,就需要自己再次定义。
public class Demo {
public static void main(String[] args) {
Person per = new Person();
per.showInfo();
}
}
匿名对象的使用
来观察我们的对象定义过程
类名 对象名 = new 类名();
前面部分告诉我们声明的对象是哪个类的实例化,以及对象的名称,方便后续的使用。
等号后面的部分用于对象的实例化,这部分包含对象的所有数据,实例化后会将该部分内容的地址给对象名,然后通过对象名来v操作该部分数据。
而匿名对象只有等号的后半部分。匿名对象只能使用一次,因为没有指向该地址的变量名,使用后该匿名对象会被Java回收机制GC回收。
示例:匿名对象的使用
public class Demo {
public static void main(String[] args) {
new Person("匿名对象", 66).showInfo();
}
}
匿名对象只会简化部分的代码,具体使用与否看个人习惯。