day11-匿名内部类的多种用法(重点)
This commit is contained in:
5
day11/src/com/inmind/nninnerclass04/AbstractClass.java
Normal file
5
day11/src/com/inmind/nninnerclass04/AbstractClass.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
public abstract class AbstractClass {
|
||||||
|
public abstract void method();
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.inmind.nninnerclass04;
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
为什么要用匿名内部类:
|
为什么要用匿名内部类:
|
||||||
类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说,
|
类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说,
|
||||||
@@ -36,9 +38,49 @@ public class Demo06 {
|
|||||||
};//多态
|
};//多态
|
||||||
|
|
||||||
myInterface3.method();
|
myInterface3.method();
|
||||||
|
System.out.println("--------------------------------");
|
||||||
|
//普通类的匿名内部类((匿名内部类就是普通类的一个子类对象))
|
||||||
|
NormalClass nc = new NormalClass(){
|
||||||
|
@Override
|
||||||
|
public void method() {
|
||||||
|
//super.method();//沿用父类功能
|
||||||
|
System.out.println("匿名内部类重写了普通类的method方法");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
nc.method();
|
||||||
|
//抽象类的匿名内部类(匿名内部类就是抽象类的一个非抽象的子类对象)
|
||||||
|
AbstractClass ac = new AbstractClass() {
|
||||||
|
@Override
|
||||||
|
public void method() {
|
||||||
|
System.out.println("匿名内部类实现重写了抽象父类的method方法");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ac.method();
|
||||||
|
|
||||||
//普通类的匿名内部类
|
//接口的匿名内部类(匿名内部类就是接口的一个实现类对象)
|
||||||
//抽象类的匿名内部类
|
MyInterface07 mi = new MyInterface07() {
|
||||||
//接口的匿名内部类
|
@Override
|
||||||
|
public void method1() {
|
||||||
|
System.out.println("匿名内部类实现重写了接口的method1方法");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mi.method1();
|
||||||
|
|
||||||
|
System.out.println("-------------------------");
|
||||||
|
//匿名内部类和匿名对象的区别
|
||||||
|
new Scanner(System.in).nextLine();//匿名对象
|
||||||
|
|
||||||
|
//解析以下代码
|
||||||
|
/*
|
||||||
|
{}中的内容实际上是一个类的定义(匿名内部类)
|
||||||
|
从79~84行,创建了一个匿名内部类的匿名对象,并调用它的方法
|
||||||
|
*/
|
||||||
|
new AbstractClass() {
|
||||||
|
@Override
|
||||||
|
public void method() {
|
||||||
|
System.out.println("匿名内部类实现重写了抽象父类的method方法");
|
||||||
|
}
|
||||||
|
}.method();//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5
day11/src/com/inmind/nninnerclass04/MyInterface07.java
Normal file
5
day11/src/com/inmind/nninnerclass04/MyInterface07.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
public interface MyInterface07 {
|
||||||
|
void method1();
|
||||||
|
}
|
||||||
7
day11/src/com/inmind/nninnerclass04/NormalClass.java
Normal file
7
day11/src/com/inmind/nninnerclass04/NormalClass.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
public class NormalClass {
|
||||||
|
public void method(){
|
||||||
|
System.out.println("NormalClass的method方法");
|
||||||
|
}
|
||||||
|
}
|
||||||
9
day11/src/com/inmind/nninnerclass04/Zi.java
Normal file
9
day11/src/com/inmind/nninnerclass04/Zi.java
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
public class Zi implements MyInterface07{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void method1() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user