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() { + + } +}