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");
                }
            });
        }
    }
  • 相关阅读:
    [CSAPP笔记][第九章虚拟存储器][吐血1500行]
    [CSAPP笔记][第六章存储器层次结构]
    [CSAPP笔记][第八章异常控制流][呕心沥血千行笔记]
    好吧,刚把CSDN搬家到博客园。。记录一发
    [CSAPP笔记][第二章信息的表示和处理]
    综合练习:词频统计
    组合数据类型综合练习:英文词频统计
    熟悉常用的Linux操作
    1.大数据概述
    语义分析
  • 原文地址:https://www.cnblogs.com/de-ming/p/12855616.html
Copyright © 2011-2022 走看看