黑马程序员技术交流社区

标题: 匿名内部类和普通的类继承有什么区别 [打印本页]

作者: 魏宇    时间: 2012-5-6 23:06
标题: 匿名内部类和普通的类继承有什么区别
本帖最后由 魏宇 于 2012-5-6 23:18 编辑

匿名内部类没有方法名,怎么实例化呢,创建匿名内部类时可以带参吗?

作者: 胡生蒙    时间: 2012-5-6 23:12
        匿名内部类:1、内部类的简写格式。2、定义匿名内部类的前提是内部类必须继承一个类或者实现接口。3、匿名内部类的格式:new 父类或接口(){定义子类的内容} 4、其实匿名内部类就是一个匿名子类对象,而且这个对象有点胖,可以理解为带有内容的对象。
        面试题:class InnerTest {
        public static void main(String[] args) {
        new Object() {
        public void function() {
        System.out.println("haha");
        }
        }.function();
        }
        }
         输出 haha

创建匿名内部类可以带参数,只要他的父类有带参数的构造方法
作者: 乔建国    时间: 2012-5-6 23:14
匿名内部类可以扩展类,也可以实现接口,但不能两者皆备,实现接口时,只能实现一个接口。
匿名内部类不能定义构造器,因为匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以定义实例初始化块,
通过实例初始化块来完成构造器需要完成的事情。
带参数时,参数传递给匿名类的父类相应带参构造器

作者: 小鹿叙鹿    时间: 2012-5-6 23:24
匿名内部类只能使用一次,不区分static和非static。如果用到外部类的变量的话,必须是类变量或者实例变量,就是必须是类定义的变量,或者final的局部变量。匿名内部类如果是继承某个类的话是可以重写那个类的方法的,这个和普通内部类一样
内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,
内部类可以实例化,多次使用
所有可以用匿名内部类的地方都可以用内部类替换,但是用匿名内部类编码非常简洁,也容易读懂,除非你需要多次使用那个内部类,不然总是建议使用匿名内部类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2