zoukankan      html  css  js  c++  java
  • Java匿名类

    实际使用中我们只需注意这几点儿:
          1. 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
          2. 匿名内部类中是不能定义构造函数的。
          3. 匿名内部类中不能存在任何的静态成员变量和静态方法。
          4. 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
          5. 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

    匿名类的语法

    Runnable hello = new Runnable() {  
        public void run() {  
            System.out.println("hello");  
        }  
    };
    一个匿名类由以下几个部分组成:

    new操作符
    Runnable:接口名称。这里还可以填写抽象类、普通类的名称。
    ():这个括号表示构造函数的参数列表。由于Runnable是一个接口,没有构造函数,所以这里填一个空的括号表示没有参数。
    {…}:大括号中间的代码表示这个类内部的一些结构。在这里可以定义变量名称、方法。跟普通的类一样。
     
     
    匿名内部类方法的访问:
    //方法1:直接在new A内部类后边加点加方法,这样访问,如果方法多了,调用太麻烦
    new D(){
        @Override
        public void ShowContext() {
            System.out.println("hello");
        }
    }.ShowContext();
    
    //方法2:通过创建对象来访问,多态思想
    D a=new D(){
        @Override
        public void ShowContext() {
            System.out.println("hello");
        }
    };
    a.ShowContext();

    匿名内部类在开发中的使用,一般是方法参数为接口的情况

    interface D{
        void ShowContext();
    }
    class B{
        //参数为接口对象
        public void show(D d) {
            d.ShowContext();
        }
    }
    
    public class niming {
        public static void main(String[]args) {
            B b=new B();
            //调用时使用匿名类创建匿名对象
            b.show(new D(){
                @Override
                public void ShowContext() {
                    System.out.println("hello");
                }
            });
        }
    }
  • 相关阅读:
    CSS盒子模型
    getContextPath、getServletPath、getRequestURI、request.getRealPath的区别
    MYSQL中的CASE WHEN END AS
    单点登录的精华总结
    git&github
    June 21st 2017 Week 25th Wednesday
    June 20th 2017 Week 25th Tuesday
    June 19th 2017 Week 25th Monday
    June 18th 2017 Week 25th Sunday
    June 17th 2017 Week 24th Saturday
  • 原文地址:https://www.cnblogs.com/de-ming/p/12855616.html
Copyright © 2011-2022 走看看