标签: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(); } }
通过接口的方式实现匿名类,可以访问外部类的成员变量,成员方法,同样也可以访问接口的成员变量。关于重写父类方法的调用,并不是在匿名类重写的地方,而是在别的地方。
标签:splay stat dem 外部类 color oid 它的 col java
原文地址:https://www.cnblogs.com/eason217/p/10302621.html