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");
                }
            });
        }
    }
  • 相关阅读:
    [译]kendoui
    [LeetCode] 74 Search a 2D Matrix(二分查找)
    [LeetCode] N皇后问题
    [LeetCode] 5 Longest Palindromic Substring
    [LeetCode] 98 Validate Binary Search Tree
    [LeetCode] 119 Pascal's Triangle II
    [LeetCode] 二叉树相关题目(不完全)
    排序方法的分类和实现
    已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
    拓扑排序(附LeetCode题目)
  • 原文地址:https://www.cnblogs.com/de-ming/p/12855616.html
Copyright © 2011-2022 走看看