From 3956c0173de733f5cc5ab3b87d8016d06ae4ddb0 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sat, 30 May 2026 13:44:26 +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=AE=9A=E4=B9=89=E5=92=8C=E4=BD=BF=E7=94=A8?= =?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 --- .../noname_innerclass08/AbstractClass.java | 5 + .../inmind/noname_innerclass08/Animal.java | 10 ++ .../inmind/noname_innerclass08/Demo06.java | 94 +++++++++++++++++++ .../noname_innerclass08/MyInterface.java | 5 + .../noname_innerclass08/MyInterfaceImpl.java | 8 ++ 5 files changed, 122 insertions(+) create mode 100644 day11/src/com/inmind/noname_innerclass08/AbstractClass.java create mode 100644 day11/src/com/inmind/noname_innerclass08/Animal.java create mode 100644 day11/src/com/inmind/noname_innerclass08/Demo06.java create mode 100644 day11/src/com/inmind/noname_innerclass08/MyInterface.java create mode 100644 day11/src/com/inmind/noname_innerclass08/MyInterfaceImpl.java diff --git a/day11/src/com/inmind/noname_innerclass08/AbstractClass.java b/day11/src/com/inmind/noname_innerclass08/AbstractClass.java new file mode 100644 index 0000000..c550594 --- /dev/null +++ b/day11/src/com/inmind/noname_innerclass08/AbstractClass.java @@ -0,0 +1,5 @@ +package com.inmind.noname_innerclass08; + +public abstract class AbstractClass { + public abstract void method1(); +} diff --git a/day11/src/com/inmind/noname_innerclass08/Animal.java b/day11/src/com/inmind/noname_innerclass08/Animal.java new file mode 100644 index 0000000..73a9410 --- /dev/null +++ b/day11/src/com/inmind/noname_innerclass08/Animal.java @@ -0,0 +1,10 @@ +package com.inmind.noname_innerclass08; + +public class Animal { + int age; + String name; + + public void eat(){ + System.out.println("动物要吃吃吃"); + } +} diff --git a/day11/src/com/inmind/noname_innerclass08/Demo06.java b/day11/src/com/inmind/noname_innerclass08/Demo06.java new file mode 100644 index 0000000..24dd640 --- /dev/null +++ b/day11/src/com/inmind/noname_innerclass08/Demo06.java @@ -0,0 +1,94 @@ +package com.inmind.noname_innerclass08; +/* +匿名内部类:定义在方法中的一个没有名字的类 + +之前我们使用的一个类的子类,或者接口的实现类时,必定要先定义.java文件,再创建出对象,调用方法,但是 +如果该子类或者实现类只用一次,那么.java文件就有点多余了,这时就可以使用匿名内部类 + +匿名内部类定义: +{ + + @Override + public void method() { + System.out.println("匿名内部类的method方法被调用了"); + } +}; + + 必须跟new 接口名(匿名内部类定义) ,new 抽象类名(匿名内部类定义),new 普通类名(匿名内部类定义)后面。 + */ +public class Demo06 { + + public static void main(String[] args) { + //普通接口的使用 + MyInterfaceImpl impl = new MyInterfaceImpl(); + impl.method(); + //多态的使用:父类引用指向子类对象 + MyInterface impl1 = new MyInterfaceImpl(); + impl1.method(); + + //能不能将MyInterfaceImpl.java这个类的定义,直接省略掉,那就使用匿名内部类 + MyInterface impl2 = new MyInterface(){ + + @Override + public void method() { + System.out.println("匿名内部类中的method方法被调用了"); + } + }; + impl2.method(); + //--------------------------------------------------- + //抽象父类的匿名内部类 + // 使用AbstractClass,但是不定义出它的子类的java文件,使用匿名内部类 + AbstractClass ac = new AbstractClass(){ + @Override + public void method1() { + System.out.println("匿名内部类(子类)实现了抽象父类的method1方法"); + } + }; + ac.method1(); + //----------------------------------------------------- + //普通类的匿名内部类 + Animal dog = new Animal(){ + @Override + public void eat() { + System.out.println("狗吃骨头"); + } + }; + dog.eat(); + + + //匿名内部类和匿名对象 + //new Scanner(System.in).nextInt();//匿名对象 + + /* + new MyInterface(){ + @Override + public void method() { + System.out.println("匿名内部类中的method方法被调用了"); + } + } 是匿名对象 + + { + @Override + public void method() { + System.out.println("匿名内部类中的method方法被调用了"); + } + }是匿名内部类 + + + */ + new MyInterface(){ + @Override + public void method() { + System.out.println("匿名内部类中的method方法被调用了"); + } + }.method(); + + } + + + public void method(){ + + + + } +} diff --git a/day11/src/com/inmind/noname_innerclass08/MyInterface.java b/day11/src/com/inmind/noname_innerclass08/MyInterface.java new file mode 100644 index 0000000..f52c2f0 --- /dev/null +++ b/day11/src/com/inmind/noname_innerclass08/MyInterface.java @@ -0,0 +1,5 @@ +package com.inmind.noname_innerclass08; + +public interface MyInterface { + void method(); +} diff --git a/day11/src/com/inmind/noname_innerclass08/MyInterfaceImpl.java b/day11/src/com/inmind/noname_innerclass08/MyInterfaceImpl.java new file mode 100644 index 0000000..6f5351d --- /dev/null +++ b/day11/src/com/inmind/noname_innerclass08/MyInterfaceImpl.java @@ -0,0 +1,8 @@ +package com.inmind.noname_innerclass08; + +public class MyInterfaceImpl implements MyInterface{ + @Override + public void method() { + System.out.println("MyInterfaceImpl类中的method方法被调用了"); + } +}