1. 匿名内部类其实就是内部类的简写格式
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口
原始写法
package test;
abstract class AbsDemo {
abstract void show();
}
class Outer {
private int x = 1;
public void setX(int x) {
this.x = x;
}
public void function() {
new Inner().show();
}
class Inner extends AbsDemo {
void show() {
if(x < 0 ) x = -x;
System.out.println("abs(x) = " + x);
}
}
}
public class InnerClassDemo {
public static void main(String[] args) {
Outer a = new Outer();
a.setX(-10);
a.function();
}
}
//abs(x) = 10
化简写法
package test;
abstract class AbsDemo {
abstract void show();
}
class Outer {
private int x = 1;
public void setX(int x) {
this.x = x;
}
public void function() {
new AbsDemo() {
void show() {
if(x < 0 ) x = -x;
System.out.println("abs(x) = " + x);
}
}.show();
}
}
public class InnerClassDemo {
public static void main(String[] args) {
Outer a = new Outer();
a.setX(-10);
a.function();
}
}
//abs(x) = 10