From c24462eea46d5bcae5e7fb1cbe178ac35a7bf95b Mon Sep 17 00:00:00 2001 From: NCJOAQ <2627723488@qq.com> Date: Mon, 28 Jul 2025 03:29:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(class37=E3=80=81class38):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=86=85=E9=83=A8=E7=B1=BB=E5=92=8C=E6=8A=BD=E8=B1=A1?= =?UTF-8?q?=E7=B1=BB=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Animal 抽象类,定义了抽象方法 cry() - 添加 InnerClassDemo1 和 InnerClassDemo2 类,演示内部类的使用 - 创建 Outer 和 Outer2 类,展示静态和非静态内部类的特点 - 实现 Test 和 Test2 类,使用匿名内部类简化对象创建 --- src/class37/InnerClassDemo1.java | 9 +++++++++ src/class37/InnerClassDemo2.java | 10 ++++++++++ src/class37/Outer.java | 19 +++++++++++++++++++ src/class37/Outer2.java | 23 +++++++++++++++++++++++ src/class38/Animal.java | 6 ++++++ src/class38/Test.java | 14 ++++++++++++++ src/class38/Test2.java | 30 ++++++++++++++++++++++++++++++ 7 files changed, 111 insertions(+) create mode 100644 src/class37/InnerClassDemo1.java create mode 100644 src/class37/InnerClassDemo2.java create mode 100644 src/class37/Outer.java create mode 100644 src/class37/Outer2.java create mode 100644 src/class38/Animal.java create mode 100644 src/class38/Test.java create mode 100644 src/class38/Test2.java diff --git a/src/class37/InnerClassDemo1.java b/src/class37/InnerClassDemo1.java new file mode 100644 index 0000000..ba39c19 --- /dev/null +++ b/src/class37/InnerClassDemo1.java @@ -0,0 +1,9 @@ +package class37; + +public class InnerClassDemo1 { + public static void main(String[] args) { + Outer.Inner oi = new Outer().new Inner(); + //内部类寄生于外部类对象,可以访问其对象,变量,方法 + oi.show(); + } +} diff --git a/src/class37/InnerClassDemo2.java b/src/class37/InnerClassDemo2.java new file mode 100644 index 0000000..8ac4df9 --- /dev/null +++ b/src/class37/InnerClassDemo2.java @@ -0,0 +1,10 @@ +package class37; + +public class InnerClassDemo2 { + public static void main(String[] args) { + Outer2.Inner inner = new Outer2.Inner(); + inner.show(); + + + } +} diff --git a/src/class37/Outer.java b/src/class37/Outer.java new file mode 100644 index 0000000..4881364 --- /dev/null +++ b/src/class37/Outer.java @@ -0,0 +1,19 @@ +package class37; + +public class Outer { + private int a = 10 ; + public class Inner{ + private String name; + + public Inner() { + } + + public Inner(String name) { + this.name = name; + } + + public void show(){ + System.out.println("show"); + } + } +} diff --git a/src/class37/Outer2.java b/src/class37/Outer2.java new file mode 100644 index 0000000..b5fecf4 --- /dev/null +++ b/src/class37/Outer2.java @@ -0,0 +1,23 @@ +package class37; + +public class Outer2 { + public static String schoolName="itheima"; + // 静态内部类 属于外部类本身持有 + public static class test{ + public String name; + } + public static class Inner{ + private String name; + public void show(){ + System.out.println(schoolName); +// System.out.println(Outer2.test.name);// 静态内部类可以访问外部类的静态成员变量,不可访问非静态成员变量 + } + public void setName(String name){ + this.name = name; + } + public String getName(){ + return name; + } + + } +} diff --git a/src/class38/Animal.java b/src/class38/Animal.java new file mode 100644 index 0000000..b069145 --- /dev/null +++ b/src/class38/Animal.java @@ -0,0 +1,6 @@ +package class38; + +public abstract class Animal { + public abstract void cry(); + +} diff --git a/src/class38/Test.java b/src/class38/Test.java new file mode 100644 index 0000000..2638c6f --- /dev/null +++ b/src/class38/Test.java @@ -0,0 +1,14 @@ +package class38; + +public class Test { + public static void main(String[] args) { + Animal Cat = new Animal() { + @Override + public void cry() { + System.out.println("猫是meow meow地叫~~"); + }// 匿名内部类,本质上是一个类,继承了Animal类,重写了cry方法 + }; + Cat.cry(); + } +} + diff --git a/src/class38/Test2.java b/src/class38/Test2.java new file mode 100644 index 0000000..858161c --- /dev/null +++ b/src/class38/Test2.java @@ -0,0 +1,30 @@ +package class38; + +public class Test2 { + public static void main(String[] args) { + //匿名内部类简化类的创建 + Swim s1 = new Swim() { + @Override + public void swimminng() { + System.out.println("学生🏊‍贼快~~~~"); + } + }; + start(s1); + Swim s2 = new Swim() { + @Override + public void swimminng() { + System.out.println("老师🏊‍贼慢~~~~"); + } + }; + start(s2); + + } + public static void start(Swim s){ + System.out.println("开始。。。。。"); + s.swimminng(); + System.out.println("结束。。。。。"); + } +} +interface Swim{ + void swimminng(); +}