匿名内部类
一、定义:
匿名内部类:就是没有类名字的内部类。
二、匿名内部类作用:
简化内部类书写。
三、匿名内部类的使用前提:
必须继承一个父类或者是实现一个接口。
四、匿名内部类的格式:
new 父类或者接口(){ 执行代码….};
五、内部类的写法:
class Outer{
class Inner
{
public void show(){
System.out.println("内部类的show方法");
}
}
public void print(){
new Inner().show();
}
}
六、匿名内部类调用自己的方法:
abstract class Inner{
abstract void show();
}
class Outer{
public void print(){
new Inner(){
public void show(){
System.out.println("内部类的show方法");
}
}.show();
}
}
class Main {
public static void main(String[] args)
{
Outer outer = new Outer();
outer.print();
}
}
七、对比:在外部类调用show1、show2方法:
内部类的实现方法
class Outer{
class Inner{
public void show1(){
System.out.println("show1");
}
public void show2(){
System.out.println("show2");
}
}
public void print(){
Inner inner = new Inner();
inner.show1();
inner.show2();
}
}
class Main {
public static void main(String[] args)
{
Outer outer = new Outer();
outer.print();
}
}
匿名内部类的实现方法
interface Inner{
public void show1();
public void show2();
}
class Outer{
Inner inner = new Inner()
{
public void show1(){
System.out.println("show1");
}
public void show2(){
System.out.println("show2");
}
};
public void print(){
inner.show1();
inner.show2();
}
}
class Main {
public static void main(String[] args)
{
Outer outer = new Outer();
outer.print();
}
}
注意:使用匿名内部类时,如果需要调用匿名内部类的两个方法或者两个方法以上。可以使用变量指向该对象。