1.概念
一般地,我们在使用对象前,需要去声明并创建一个对象,此时我们会给对象一个对象名,以便我们在程序中通过对象名多次使用该对象。
而今天我们讲的匿名对象则不同,我们不会给它命对象名,而是在使用它的时候直接以 (new + 构造方法) 的形式直接创建并初始化这个对象,不用给它命名,并且它在使用完后,会被直接销毁,所以是一次性的,无法重复使用该对象。
我们可以用匿名对象做参数,也可以用匿名对象调用方法。
2.代码示例
我们先创建一个学生类
class Student {
private final int id;
private final String name;
public Student( int id, String name) {
this.name =name;
this.id = id;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public void My_print1() {
System.out.println("目前有100个学生");
}
public void My_print2(Student a) {
System.out.println("学生学号为:" + a.id);
System.out.println("学生姓名为:" + a.name);
}
}
我们有两个私有变量 id 和 name,通过构造方法 Student() 去给它们初始化,用 toString()方法去返回有关学生信息的字符串,My_print1()方法用于输出学生人数,My_print2()用于输出学生的信息。
public class Main {
public static void main(String[] args) {
// 用创建一个对象的方式输出学生信息
Student A = new Student( 2023, "Alice");
System.out.println(A);
// 创建一个匿名对象输出学生信息
System.out.println( new Student(2024, "Tom"));
// 创建一个匿名对象并直接调用方法
new Student( 0, "").My_print1();
// 创建一个匿名对象作为参数
new Student(0,"").My_print2(new Student(1000, "LiLi"));
}
}
在主函数中,我们可以清晰的看到匿名对象和普通对象的区别,普通对象需要声明和命名,而匿名对象则直接创建及初始化即可。
在我们要需要调用学生类里面的方法时,我们可以直接通过创建一个匿名对象去调用,这样就不用去声明一个新的对象了,避免了对象名的繁琐,可以让我们的代码更加清晰易懂。
3.代码综合
public class Main {
public static void main(String[] args) {
// 用创建一个对象的方式输出学生信息
Student A = new Student( 2023, "Alice");
System.out.println(A);
// 创建一个匿名对象输出学生信息
System.out.println( new Student(2024, "Tom"));
// 创建一个匿名对象并直接调用方法
new Student( 0, "").My_print1();
// 创建一个匿名对象作为参数
new Student(0,"").My_print2(new Student(1000, "LiLi"));
}
}
class Student {
private final int id;
private final String name;
public Student( int id, String name) {
this.name =name;
this.id = id;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public void My_print1() {
System.out.println("目前有100个学生");
}
public void My_print2(Student a) {
System.out.println("学生学号为:" + a.id);
System.out.println("学生姓名为:" + a.name);
}
}