黑马程序员技术交流社区

标题: 匿名内部类 [打印本页]

作者: lhwinner    时间: 2015-5-24 14:23
标题: 匿名内部类
匿名内部类为什么不能创建构造函数?如果不能创建构造函数,为什么会在定义一个匿名内部类的时候会自动创建一个实例对象,而这个实例对象到底是哪个类的实例?
作者: pvbj0314    时间: 2015-5-24 17:26
本帖最后由 pvbj0314 于 2015-5-24 17:31 编辑

构造函数要与类同名,无返回值类型。匿名内部类没名字,如何创建构造函数?
匿名类的句法
一个匿名类是一个表达式。匿名类表达式的句法十分像一个构造函数的调用,除了多一个包含类定义的“{}”。
匿名类表达式由以下部分组成:

• new操作
• 一个接口名或类名,它们与匿名类的关系是被实现或被继承。
• 包含构造函数参数的“()”,注意:接口没有构造函数,因此只用一对“()”即可。
• 匿名类的定义体,在匿名类中可以声明方法,但是不能有表达式。



作者: pvbj0314    时间: 2015-5-24 17:31

例子(黑体部分):
public class HelloWorldAnonymousClasses {
    interface HelloWorld {
         public void greet();
         public void greetSomeone(String someone);
    }
     public void sayHello() {
         
     HelloWorld frenchGreeting = new HelloWorld() {
            String name = "tout le monde";
            public void greet() {
                greetSomeone("tout le monde");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Salut " + name);
            }
        };

        frenchGreeting.greetSomeone("Fred");
    }
    public static void main(String...args){
        HelloWorldAnonymousClasses myApp = new HelloWorldAnonymousClasses();
        myApp.sayHello();
     }
}


作者: Mr7952    时间: 2015-5-24 20:30
学习了、、、

作者: 南方小道士    时间: 2015-5-24 22:46
学习了一下




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