feat(class37、class38): 添加内部类和抽象类相关代码

- 新增 Animal 抽象类,定义了抽象方法 cry()
- 添加 InnerClassDemo1 和 InnerClassDemo2 类,演示内部类的使用
- 创建 Outer 和 Outer2 类,展示静态和非静态内部类的特点
- 实现 Test 和 Test2 类,使用匿名内部类简化对象创建
This commit is contained in:
2025-07-28 03:29:39 +08:00
parent 406787c2a2
commit c24462eea4
7 changed files with 111 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
package class37;
public class InnerClassDemo1 {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
//内部类寄生于外部类对象,可以访问其对象,变量,方法
oi.show();
}
}

View File

@@ -0,0 +1,10 @@
package class37;
public class InnerClassDemo2 {
public static void main(String[] args) {
Outer2.Inner inner = new Outer2.Inner();
inner.show();
}
}

19
src/class37/Outer.java Normal file
View File

@@ -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");
}
}
}

23
src/class37/Outer2.java Normal file
View File

@@ -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;
}
}
}

6
src/class38/Animal.java Normal file
View File

@@ -0,0 +1,6 @@
package class38;
public abstract class Animal {
public abstract void cry();
}

14
src/class38/Test.java Normal file
View File

@@ -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();
}
}

30
src/class38/Test2.java Normal file
View File

@@ -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();
}