From 955735fb8d31113466e26aec91f419d94f8af59f Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sun, 25 Jan 2026 16:56:10 +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=E6=A6=82=E8=BF=B0&=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=EF=BC=88=E9=87=8D=E7=82=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day11/src/com/inmind/innerclass03/Demo05.java | 3 ++ .../src/com/inmind/nninnerclass04/Demo06.java | 44 +++++++++++++++++++ .../inmind/nninnerclass04/MyInterface06.java | 5 +++ .../nninnerclass04/MyInterface06Impl.java | 8 ++++ 4 files changed, 60 insertions(+) create mode 100644 day11/src/com/inmind/nninnerclass04/Demo06.java create mode 100644 day11/src/com/inmind/nninnerclass04/MyInterface06.java create mode 100644 day11/src/com/inmind/nninnerclass04/MyInterface06Impl.java diff --git a/day11/src/com/inmind/innerclass03/Demo05.java b/day11/src/com/inmind/innerclass03/Demo05.java index 07bbecd..d3ef89b 100644 --- a/day11/src/com/inmind/innerclass03/Demo05.java +++ b/day11/src/com/inmind/innerclass03/Demo05.java @@ -18,5 +18,8 @@ public class Demo05 { System.out.println(innerClass.num); System.out.println(innerClass.num2); innerClass.innerMethod(); + System.out.println("-----------------------"); + OuterClass outerClass = new OuterClass(); + outerClass.method(); } } diff --git a/day11/src/com/inmind/nninnerclass04/Demo06.java b/day11/src/com/inmind/nninnerclass04/Demo06.java new file mode 100644 index 0000000..467a58c --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/Demo06.java @@ -0,0 +1,44 @@ +package com.inmind.nninnerclass04; + + +/* +为什么要用匿名内部类: +类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说, +我们不应该直接定义一个类来使用,太麻烦太浪费,直接使用匿名内部类 + +匿名内部类的格式: +new 父类名或者接口名(){ + // 方法重写 + @Override + public void method() { + // 执行语句 + } +}; + +注意:所有的匿名内部类的赋值写法,必定是多态!!!因为它匿名,所以只能用父类名或接口名来接收(父类引用指向子类对象) + */ +public class Demo06 { + public static void main(String[] args) { + //以接口为例 + //接口的普通使用 + MyInterface06Impl myInterface1 = new MyInterface06Impl(); + myInterface1.method(); + //接口的多态使用 + MyInterface06 myInterface2 = new MyInterface06Impl(); + myInterface2.method(); + //假设当前MyInterface06Impl只使用一次,那么单独定义一个类,过于浪费 + //能否将这个实现类省略掉呢???可以,匿名内部类,也就是实现类没有名字 + MyInterface06 myInterface3 = new MyInterface06(){ + @Override + public void method() { + System.out.println("匿名内部类重写了method方法"); + } + };//多态 + + myInterface3.method(); + + //普通类的匿名内部类 + //抽象类的匿名内部类 + //接口的匿名内部类 + } +} diff --git a/day11/src/com/inmind/nninnerclass04/MyInterface06.java b/day11/src/com/inmind/nninnerclass04/MyInterface06.java new file mode 100644 index 0000000..fb29f0c --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/MyInterface06.java @@ -0,0 +1,5 @@ +package com.inmind.nninnerclass04; + +public interface MyInterface06 { + void method(); +} diff --git a/day11/src/com/inmind/nninnerclass04/MyInterface06Impl.java b/day11/src/com/inmind/nninnerclass04/MyInterface06Impl.java new file mode 100644 index 0000000..e470799 --- /dev/null +++ b/day11/src/com/inmind/nninnerclass04/MyInterface06Impl.java @@ -0,0 +1,8 @@ +package com.inmind.nninnerclass04; + +public class MyInterface06Impl implements MyInterface06{ + @Override + public void method() { + System.out.println("MyInterface06Impl重写实现了method方法"); + } +}