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