码迷,mamicode.com
首页 > 编程语言 > 详细

java匿名类

时间:2019-01-22 11:48:41      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:splay   stat   dem   外部类   color   oid   它的   col   java   

匿名类:顾名思义,就是没有名字的类,所以它不能在任何地方引用,它只能被初始化一次。它的实现方式有两种,一种是继承抽象类,另一种是实现接口。

方式一:

定义抽象类

public abstract class AbstractAnonymous {
    String fatherStr = "abstractAnonymous";
    
    void fatherDisplay() {
        System.out.println(fatherStr);
    }
    
    abstract void display();
}

实现匿名类

public class Demo1 {
    private static String str = "hello";
    
    public static void outDisplay() {
        System.out.println(str);
    }
    
    public static void main(String[] args) {        
        AbstractAnonymous abstractAnonymous = new AbstractAnonymous() {
            @Override
            void display() {
                System.out.println("hello");
            }
        };
        
        abstractAnonymous.display();
    }
}

匿名类与外部类:匿名类可以访问外部类的成员变量,成员方法。

public class Demo1 {
    private static String str = "hello";
    
    public static void outDisplay() {
        System.out.println(str);
    }
    
    public static void main(String[] args) {        
        AbstractAnonymous abstractAnonymous = new AbstractAnonymous() {
            @Override
            void display() {
                System.out.println(str);//访问外部类成员变量
                outDisplay();//访问外部类成员方法
            }
        };
        
        abstractAnonymous.display();
    }
}

匿名类与父类:匿名类同样可以访问父类的成员变量以及成员方法。

public class Demo1 {
    private static String str = "hello";
    
    public static void outDisplay() {
        System.out.println(str);
    }
    
    public static void main(String[] args) {
           AbstractAnonymous abstractAnonymous = new AbstractAnonymous() {
            @Override
            void display() {
                System.out.println(fatherStr);
                fatherDisplay();
            }
        };
        
        abstractAnonymous.display();
    }
}

方式二:

定义接口

public interface Anonymous {
   String fatherStr = "anonymous";
   public abstract void display();
}

实现匿名类

public class Demo1 {
    private static String str = "hello";
    
    public static void outDisplay() {
        System.out.println(str);
    }
    
    public static void main(String[] args) {
        Anonymous anonymous = new Anonymous() {
            @Override  
            public void display() {
                //重写父类方法,调用是在别的地方
                System.out.println(str);
                outDisplay();
                System.out.println(fatherStr);
            }
        };

        anonymous.display();
      }
}

通过接口的方式实现匿名类,可以访问外部类的成员变量,成员方法,同样也可以访问接口的成员变量。关于重写父类方法的调用,并不是在匿名类重写的地方,而是在别的地方。

java匿名类

标签:splay   stat   dem   外部类   color   oid   它的   col   java   

原文地址:https://www.cnblogs.com/eason217/p/10302621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!