Java函数的内部类与匿名类实现方法
Java中的内部类与匿名类是两种特殊的类。内部类是一个定义在另一个类中的类,而匿名类是一个没有名字的类,通常用于创建临时对象。在Java中,内部类和匿名类都可以用于实现一些特殊的需求。
一、内部类的实现方法
Java中的内部类可以分为四种:成员内部类、静态内部类、方法内部类和匿名内部类。这里介绍成员内部类和静态内部类的实现方法。
1.成员内部类
成员内部类是定义在另一个类的内部的类。它可以访问外部类的变量和方法,但需要通过外部类的对象来创建内部类的对象。成员内部类定义方式如下:
public class Outer {
private int x = 10;
public class Inner {
public void print() {
System.out.println(x);
}
}
}
在上面的代码中,Inner类是成员内部类,它可以访问Outer类的私有成员变量x。创建成员内部类的对象需要使用“外部类名.内部类名”的方式,如下:
Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.print();
2.静态内部类
静态内部类是定义在另一个类的内部的静态类。它不需要通过外部类的对象来创建内部类的对象,可以直接使用“内部类名”的方式来创建内部类的对象。静态内部类定义方式如下:
public class Outer {
private static int x = 10;
public static class Inner {
public void print() {
System.out.println(x);
}
}
}
在上面的代码中,Inner类是静态内部类。创建静态内部类的对象可以直接使用“内部类名”的方式,如下:
Outer.Inner inner = new Outer.Inner(); inner.print();
二、匿名类的实现方法
匿名类是没有名字的类,通常用于创建临时对象。匿名类只能继承一个类或实现一个接口,它不能同时继承一个类和实现一个接口。匿名类的实现方法如下:
1.匿名内部类继承一个类
public class Test {
public static void main(String[] args) {
Animal animal = new Animal() {
public void run() {
System.out.println("狗在跑!");
}
};
animal.run();
}
}
在上面的代码中,Animal类是一个普通类,它有一个run()方法。创建一个Animal类的匿名子类并覆盖run()方法,然后通过Animal的引用调用run()方法。
2.匿名内部类实现一个接口
public interface Action {
void doAction();
}
public class Test {
public static void main(String[] args) {
Action action = new Action() {
public void doAction() {
System.out.println("执行动作!");
}
};
action.doAction();
}
}
在上面的代码中,创建了一个实现了Action接口的匿名类并覆盖了doAction()方法,然后通过Action接口的引用调用doAction()方法。
总结:
Java中的内部类和匿名类是Java语言中两类特殊的类,它们可以用来实现一些特殊的需求。内部类有四种类型:成员内部类、静态内部类、方法内部类和匿名内部类,而匿名内部类只能继承一个类或者实现一个接口。熟练掌握内部类和匿名类的实现方法,可以有效的提高代码的可读性和灵活性。
