今天遇到了一个题,涉及到匿名内部类的构造器问题,起初想当然地认为,匿名内部类连名字都没有,怎么可能有构造器,但是一经过测试,傻眼了。原来在匿名内部类中的构造代码块充当了构造器的作用。光说无益,上代码。
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(){//省略} 的小括号中传参就可以了。
继续阅读与本文标签相同的文章
-
Yotta专业存储设备芝麻云节点服务器IDC数据机房托管的优势
2026-05-18栏目: 教程
-
Edge逐步融入Fluent Design元素:新版颜色筛选器控件上线
2026-05-18栏目: 教程
-
阿里云服务器突发性能实例t5配置性能使用场景及注意事项
2026-05-18栏目: 教程
-
Square为澳大利亚餐馆提供定制平台!
2026-05-18栏目: 教程
-
711便利店:日本计划关店1000家,母公司将裁员3000人
2026-05-18栏目: 教程
