深入理解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();
}
}
上一篇: Java中的隐藏内部类详解
下一篇: Java里的隐藏内部类和嵌套类详解