zoukankan      html  css  js  c++  java
  • 【匿名内部类可不可以继承或实现接口?】

    答案是可以,而且是必须。。不过不是那种extends的继承方式,解释如下:

    1.先了解一下匿名内部类:

    见名知意,匿名内部类没有类名,而且和其他类不同,它是一个表达式,语法类似于调用一个类的构造函数,如 A a = new A(){ };
    此外还包含一个代码块,代码块中完成其类的定义

    事实上,使用匿名内部类的前提条件就是必须继承一个父类或实现一个接口

    匿名内部类可以使你的代码更加简洁,你可以在定义一个类的同时对其进行实例化。它与局部类很相似,不同的是它没有类名,如果某个局部类你只需要用一次,那么你就可以使用匿名内部类

    2.代码示例:

    public class Anonymous {
        public static void main(String[] args) {
    /*
           匿名类是一个表达式,匿名类的语法就类似于调用一个类的构建函数
        new  Animals(),除些之外,还包含了一个代码块,在代码块中完成类的定义
        */
            Animals a = new Animals(){
                public void eat(){
                    System.out.println("匿名内部类");
                }
            };
            a.eat();//调用匿名内部类的方法
        }
    
    }
    
    abstract class Animals{
        public abstract void eat();
    }

    输出结果就是:匿名内部类

    可以节约一个类代码的定义(也就是直接把子类的代码放入父类中了)

    同理,接口也可以继承:

    interface Animals{

        public void eat();

    }

    匿名内部类内容和上面的一致;

     

    其实我们学习GUI的时候就用过匿名内部类,比如添加监听事件:

    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // do something
        }});

    这个new ActionListener(){};就是匿名内部类

     

     

     

  • 相关阅读:
    重拾安卓_01_安卓开发环境搭建(eclipse)
    重拾安卓_01_安卓开发环境搭建(android studio)
    【BZOJ】1038: [ZJOI2008]瞭望塔
    【BZOJ】2178: 圆的面积并
    【UR #4】元旦三侠的游戏(博弈论+记忆化)
    【BZOJ】1027: [JSOI2007]合金(凸包+floyd)
    【POJ】1151 Atlantis(线段树)
    【POJ】1228 Grandpa's Estate(凸包)
    【POJ】1556 The Doors(计算几何基础+spfa)
    【POJ】1113 Wall(凸包)
  • 原文地址:https://www.cnblogs.com/dabuliu/p/14457793.html
Copyright © 2011-2022 走看看