day11-匿名内部类的多种用法(重点)

This commit is contained in:
2026-01-26 10:03:44 +08:00
parent 955735fb8d
commit 03032d58ec
5 changed files with 71 additions and 3 deletions

View File

@@ -0,0 +1,5 @@
package com.inmind.nninnerclass04;
public abstract class AbstractClass {
public abstract void method();
}

View File

@@ -1,6 +1,8 @@
package com.inmind.nninnerclass04; package com.inmind.nninnerclass04;
import java.util.Scanner;
/* /*
为什么要用匿名内部类: 为什么要用匿名内部类:
类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说, 类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说,
@@ -36,9 +38,49 @@ public class Demo06 {
};//多态 };//多态
myInterface3.method(); myInterface3.method();
System.out.println("--------------------------------");
//普通类的匿名内部类((匿名内部类就是普通类的一个子类对象))
NormalClass nc = new NormalClass(){
@Override
public void method() {
//super.method();//沿用父类功能
System.out.println("匿名内部类重写了普通类的method方法");
}
};
nc.method();
//抽象类的匿名内部类(匿名内部类就是抽象类的一个非抽象的子类对象)
AbstractClass ac = new AbstractClass() {
@Override
public void method() {
System.out.println("匿名内部类实现重写了抽象父类的method方法");
}
};
ac.method();
//普通类的匿名内部类 //接口的匿名内部类(匿名内部类就是接口的一个实现类对象)
//抽象类的匿名内部类 MyInterface07 mi = new MyInterface07() {
//接口的匿名内部类 @Override
public void method1() {
System.out.println("匿名内部类实现重写了接口的method1方法");
}
};
mi.method1();
System.out.println("-------------------------");
//匿名内部类和匿名对象的区别
new Scanner(System.in).nextLine();//匿名对象
//解析以下代码
/*
{}中的内容实际上是一个类的定义(匿名内部类)
从79~84行创建了一个匿名内部类的匿名对象并调用它的方法
*/
new AbstractClass() {
@Override
public void method() {
System.out.println("匿名内部类实现重写了抽象父类的method方法");
}
}.method();//
} }
} }

View File

@@ -0,0 +1,5 @@
package com.inmind.nninnerclass04;
public interface MyInterface07 {
void method1();
}

View File

@@ -0,0 +1,7 @@
package com.inmind.nninnerclass04;
public class NormalClass {
public void method(){
System.out.println("NormalClass的method方法");
}
}

View File

@@ -0,0 +1,9 @@
package com.inmind.nninnerclass04;
public class Zi implements MyInterface07{
@Override
public void method1() {
}
}