day11-匿名内部类的概述&定义(重点)
This commit is contained in:
@@ -18,5 +18,8 @@ public class Demo05 {
|
|||||||
System.out.println(innerClass.num);
|
System.out.println(innerClass.num);
|
||||||
System.out.println(innerClass.num2);
|
System.out.println(innerClass.num2);
|
||||||
innerClass.innerMethod();
|
innerClass.innerMethod();
|
||||||
|
System.out.println("-----------------------");
|
||||||
|
OuterClass outerClass = new OuterClass();
|
||||||
|
outerClass.method();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
44
day11/src/com/inmind/nninnerclass04/Demo06.java
Normal file
44
day11/src/com/inmind/nninnerclass04/Demo06.java
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
为什么要用匿名内部类:
|
||||||
|
类或者一个接口,需要一个子类或者实现类时但是该子类或者实现类,又只需要使用一次,对于这种需求来说,
|
||||||
|
我们不应该直接定义一个类来使用,太麻烦太浪费,直接使用匿名内部类
|
||||||
|
|
||||||
|
匿名内部类的格式:
|
||||||
|
new 父类名或者接口名(){
|
||||||
|
// 方法重写
|
||||||
|
@Override
|
||||||
|
public void method() {
|
||||||
|
// 执行语句
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
注意:所有的匿名内部类的赋值写法,必定是多态!!!因为它匿名,所以只能用父类名或接口名来接收(父类引用指向子类对象)
|
||||||
|
*/
|
||||||
|
public class Demo06 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//以接口为例
|
||||||
|
//接口的普通使用
|
||||||
|
MyInterface06Impl myInterface1 = new MyInterface06Impl();
|
||||||
|
myInterface1.method();
|
||||||
|
//接口的多态使用
|
||||||
|
MyInterface06 myInterface2 = new MyInterface06Impl();
|
||||||
|
myInterface2.method();
|
||||||
|
//假设当前MyInterface06Impl只使用一次,那么单独定义一个类,过于浪费
|
||||||
|
//能否将这个实现类省略掉呢???可以,匿名内部类,也就是实现类没有名字
|
||||||
|
MyInterface06 myInterface3 = new MyInterface06(){
|
||||||
|
@Override
|
||||||
|
public void method() {
|
||||||
|
System.out.println("匿名内部类重写了method方法");
|
||||||
|
}
|
||||||
|
};//多态
|
||||||
|
|
||||||
|
myInterface3.method();
|
||||||
|
|
||||||
|
//普通类的匿名内部类
|
||||||
|
//抽象类的匿名内部类
|
||||||
|
//接口的匿名内部类
|
||||||
|
}
|
||||||
|
}
|
||||||
5
day11/src/com/inmind/nninnerclass04/MyInterface06.java
Normal file
5
day11/src/com/inmind/nninnerclass04/MyInterface06.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
public interface MyInterface06 {
|
||||||
|
void method();
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.inmind.nninnerclass04;
|
||||||
|
|
||||||
|
public class MyInterface06Impl implements MyInterface06{
|
||||||
|
@Override
|
||||||
|
public void method() {
|
||||||
|
System.out.println("MyInterface06Impl重写实现了method方法");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user