匿名内部类中的构造器问题

今天遇到了一个题,涉及到匿名内部类的构造器问题,起初想当然地认为,匿名内部类连名字都没有,怎么可能有构造器,但是一经过测试,傻眼了。原来在匿名内部类中的构造代码块充当了构造器的作用。光说无益,上代码。

Student类

public class Student {
	private String name;
	
	public void run(){
		System.out.println("好好学习");
	}
	
	public Student() {
		super();
		System.out.println("大傻逼!");
	}

	public Student(String name) {
		super();
		this.name = name;
	}
}

测试类:

public class Test {

	public static void main(String[] args) {
		Student s=new Student() {
			public void run() {
				System.out.println("我是学生,我要好好学习!");
			}
			//调用无参构造器
			{
				System.out.println("我是大傻逼");
			}
		};
		s.run();
	}
}

输出结果:

大傻逼!
我是大傻逼
我是学生,我要好好学习!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

既然能使用无参构造器,那有参数构造器怎么定义呢?构造代码块又没有传递参数的地方,怎么办?

其实只需要在new Student(){//省略}  的小括号中传参就可以了。

猜你喜欢

转载自blog.csdn.net/pengzonglu7292/article/details/85088124
今日推荐