feat(class37、class38): 添加内部类和抽象类相关代码
- 新增 Animal 抽象类,定义了抽象方法 cry() - 添加 InnerClassDemo1 和 InnerClassDemo2 类,演示内部类的使用 - 创建 Outer 和 Outer2 类,展示静态和非静态内部类的特点 - 实现 Test 和 Test2 类,使用匿名内部类简化对象创建
This commit is contained in:
9
src/class37/InnerClassDemo1.java
Normal file
9
src/class37/InnerClassDemo1.java
Normal 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();
|
||||
}
|
||||
}
|
||||
10
src/class37/InnerClassDemo2.java
Normal file
10
src/class37/InnerClassDemo2.java
Normal 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
19
src/class37/Outer.java
Normal 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
23
src/class37/Outer2.java
Normal 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
6
src/class38/Animal.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package class38;
|
||||
|
||||
public abstract class Animal {
|
||||
public abstract void cry();
|
||||
|
||||
}
|
||||
14
src/class38/Test.java
Normal file
14
src/class38/Test.java
Normal 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
30
src/class38/Test2.java
Normal 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();
|
||||
}
|
||||
Reference in New Issue
Block a user