欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入理解Java基础:匿名内部类的全面剖析(03)

最编程 2024-07-19 12:12:13
...
package com.northcastle.B_niming_innerClass; /** * author : northcastle * createTime:2022/2/9 */ /** * 本案例演示 : 匿名内部类 */ public class NimingInnerClass { //1.外部类的成员 private String field01 = "外部类的私有属性field01"; public String field02 = "外部类的共有属性field02"; //2.外部类的构造器 public NimingInnerClass() { } public NimingInnerClass(String field01, String field02) { this.field01 = field01; this.field02 = field02; } //3.外部类的方法 /** * 3.1 一个普通的方法 */ public void method01(){ System.out.println("外部类的方法:method01"); } /** * 3.2 实现接口的匿名内部类 */ public void method02(){ //这个方法中包含实现接口的匿名内部类 //1.匿名内部类的定义 InterfaceA interfaceA_niming = new InterfaceA() { public String field01 = "接口+匿名内部类中的field01"; @Override public void sayHello() { System.out.println("接口+实现接口的匿名内部类对你说 : Hello"); //2.使用匿名内部类的属性 System.out.println("接口匿名内部类的field01 : "+field01); System.out.println("外部类的field01 : "+NimingInnerClass.this.field01); System.out.println("外部类的field02 : "+field02); } }; //3.判断匿名内部类类型 : 编译类型、运行时类型 System.out.println("接口+匿名内部类 的运行时类型 : "+interfaceA_niming.getClass()); //4.运行匿名内部类对象的方法 interfaceA_niming.sayHello(); } /** * 3.3. 继承类的匿名内部类 */ public void method03(){ //这个方法中包含实现类的匿名内部类 //1.匿名内部类的定义 ClassA classA_niming = new ClassA() { public String field01 = "类+匿名内部类中的field01"; @Override void sayHi() { System.out.println("类+匿名内部类对你说 : Hi"); //2.使用匿名内部类的属性 System.out.println("类+匿名内部类的field01 : "+field01); System.out.println("外部类的field01 : "+NimingInnerClass.this.field01); System.out.println("外部类的field02 : "+field02); } }; //3.判断匿名内部类类型 : 编译类型、运行时类型 System.out.println("类+匿名内部类 的运行时类型 : "+classA_niming.getClass()); //4.运行匿名内部类的对象的方法 classA_niming.sayHi(); } /** * 3.4 作为实参的匿名内部类 * @param interfaceA */ public void method04(InterfaceA interfaceA){ // 这里演示最常用的使用方式 : 匿名内部类作为实参传入方法中 interfaceA.sayHello(); } }