From 03032d58ec9d081884b1c61fd51ca9f8d04e6cdb Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Mon, 26 Jan 2026 10:03:44 +0800 Subject: [PATCH] =?UTF-8?q?day11-=E5=8C=BF=E5=90=8D=E5=86=85=E9=83=A8?= =?UTF-8?q?=E7=B1=BB=E7=9A=84=E5=A4=9A=E7=A7=8D=E7=94=A8=E6=B3=95=EF=BC=88?= =?UTF-8?q?=E9=87=8D=E7=82=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inmind/nninnerclass04/AbstractClass.java | 5 ++ .../src/com/inmind/nninnerclass04/Demo06.java | 48 +++++++++++++++++-- .../inmind/nninnerclass04/MyInterface07.java | 5 ++ .../inmind/nninnerclass04/NormalClass.java | 7 +++ day11/src/com/inmind/nninnerclass04/Zi.java | 9 ++++ 5 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 day11/src/com/inmind/nninnerclass04/AbstractClass.java create mode 100644 day11/src/com/inmind/nninnerclass04/MyInterface07.java create mode 100644 day11/src/com/inmind/nninnerclass04/NormalClass.java create mode 100644 day11/src/com/inmind/nninnerclass04/Zi.java diff --git a/day11/src/com/inmind/nninnerclass04/AbstractClass.java b/day11/src/com/inmind/nninnerclass04/AbstractClass.java new file mode 100644 index 0000000..8f60fff --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/AbstractClass.java @@ -0,0 +1,5 @@ +package com.inmind.nninnerclass04; + +public abstract class AbstractClass { + public abstract void method(); +} diff --git a/day11/src/com/inmind/nninnerclass04/Demo06.java b/day11/src/com/inmind/nninnerclass04/Demo06.java index 467a58c..8e80c62 100644 --- a/day11/src/com/inmind/nninnerclass04/Demo06.java +++ b/day11/src/com/inmind/nninnerclass04/Demo06.java @@ -1,6 +1,8 @@ package com.inmind.nninnerclass04; +import java.util.Scanner; + /* 为什么要用匿名内部类: 类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说, @@ -36,9 +38,49 @@ public class Demo06 { };//多态 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();// } } diff --git a/day11/src/com/inmind/nninnerclass04/MyInterface07.java b/day11/src/com/inmind/nninnerclass04/MyInterface07.java new file mode 100644 index 0000000..f956823 --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/MyInterface07.java @@ -0,0 +1,5 @@ +package com.inmind.nninnerclass04; + +public interface MyInterface07 { + void method1(); +} diff --git a/day11/src/com/inmind/nninnerclass04/NormalClass.java b/day11/src/com/inmind/nninnerclass04/NormalClass.java new file mode 100644 index 0000000..09781a6 --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/NormalClass.java @@ -0,0 +1,7 @@ +package com.inmind.nninnerclass04; + +public class NormalClass { + public void method(){ + System.out.println("NormalClass的method方法"); + } +} diff --git a/day11/src/com/inmind/nninnerclass04/Zi.java b/day11/src/com/inmind/nninnerclass04/Zi.java new file mode 100644 index 0000000..9f939e9 --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/Zi.java @@ -0,0 +1,9 @@ +package com.inmind.nninnerclass04; + +public class Zi implements MyInterface07{ + + @Override + public void method1() { + + } +}