黑马程序员技术交流社区
标题: 关于匿名类与构造函数的问题~ [打印本页]
作者: 何旭程 时间: 2013-4-1 14:34
标题: 关于匿名类与构造函数的问题~
本帖最后由 何旭程 于 2013-4-3 15:24 编辑
- FilenameFilter filter = new FilenameFilter(suffix) {
-
- private String suffix;
-
- FilenameFilter(String suffix) {
-
- this.suffix = suffix;
- }
- @Override
- public boolean accept(File dir, String name) {
-
- return name.endsWith(suffix);
- }
- };
复制代码如上代码,我原本打算写一个匿名的过滤器,并通过传递字符串参数指定需要过滤的后缀名,不过Eclipse报错,并提示:Anonymousclasses cannot contain explicitly declared constructors.,最后我是通过导入外部过滤器实现的。
我想问的是:匿名类有没有构造函数?如果有构造函数,那么在运行时的载入过程又是怎样的?是不是不能重载带参数的构造函数?
作者: 王瑞 时间: 2013-4-1 16:43
匿名内部类的特点:
1,一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先或是覆盖。
2,只是为了获得一个对象实例,不需要知道其实际类型。
3,类名没有意义,也就是不需要使用到。
注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。因他是局部内部类,那么局部内部类的所有限制都对其生效。匿名内部类是唯一一种无构造方法类。
作者: 王杰123 时间: 2013-4-1 17:38
分析:构造函数名和类名相同,匿名类是没有名字的,那么构造函数也没有名字。
毕老师笔记:
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。 可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
作者: 王杰123 时间: 2013-4-1 18:38
王瑞 发表于 2013-4-1 16:43 
匿名内部类的特点:
1,一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先 ...
局部内部类 是可以有 构造方法的
class Outer
{
int x = 3;
void method(final int a)
{
final int y = 4;
class Inner
{
void function()
{
System.out.println(y);
}
}
new Inner().function();//这里就是默认构造方法
}
}
class InnerClassDemo3
{
public static void main(String[] args)
{
Outer out = new Outer();
out.method(7);
out.method(8);
}
}
作者: 王杰123 时间: 2013-4-1 19:03
图片是 内部类和 匿名类的 互换,希望对你有帮助。
-
未命名.jpg
(46.83 KB, 下载次数: 111)
作者: 黄玉昆 时间: 2013-4-3 11:57
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |