黑马程序员技术交流社区

标题: 关于匿名类 [打印本页]

作者: nxp1986    时间: 2014-6-17 18:13
标题: 关于匿名类
看到匿名内部类的时候完全没明白,肿么办?
前面的都能理解也能自己慢慢的写一点程序就到匿名类卡住了,,,,求解决
作者: 不一样的颜色    时间: 2014-6-17 18:53
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。
作者: Alan_Kwan    时间: 2014-6-17 20:01
琢磨一下它的格式,你会明白,其实跟一般的语句没什么不同的。
作者: 江夷    时间: 2014-6-17 22:14
本帖最后由 江夷 于 2014-6-17 22:20 编辑

     //接口类
interface Animal{
        //(吃的方法)抽象方法
        public abstract void eat();
}
//(类实现接口)狗实现动物
class Dog implements Animal{
        //重写吃的方法
        public void eat(){
                System.out.println("吃肉");
        }
}
//测试类
class InnerTest8{
        public static void main(String[] args){
                //Animal d = new Dog();   这是多态创建dog对象的方式,
                              //调用method方法                     method(
                        //匿名对象        
                        new Animal(){
                                //重写吃的方法
                                public void eat(){
                                        System.out.println("吃肉");
                                }
                        }
                );
                //调用method方法
                method(
                //匿名对象        
                        new Animal(){
                        //重写吃的方法
                                public void eat(){
                                        System.out.println("吃<。)#)))≦");
                                }
                        }
                );
        }
        //创建函数(method方法)
        public static void method(Animal a){
                //吃的方法
                a.eat();
        }
}
       可以将匿名内部类和内部类两个区分来看,
         其实就是因为在测试类中需要使用接口方法,需要有类实现接口才能重写方法,所以就创建了一个匿名对象,        这个匿名对象是以Animal的多态的匿名对象形式创建的,然让这个匿名对象来重写接口的eat方法,但因为没有实体对象,所以将这个整个匿名对象以及里面的重写方法用一个单独的method方法装起来,这就是完整的匿名内部类




作者: 人心如水    时间: 2014-6-17 23:00
视频看不懂就看老师的笔记,看会笔记再看视频




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