在这里我们介绍在java中的三种内部类(成员内部类,方法内部类(又叫局部内部类)和匿名内部类),内部类顾名思义就是在一个类里面再定义一个类。
1.成员内部类(member inner class):常规内部类没有用static修饰且定义在在外部类类体中,高度内聚
常规内部类中的方法可以直接使用外部类的实例变量和实例方法。
代码如下:
public class A {
//定义一个常规内部类
public class B {
public void show() {
System.out.pritln("这是类B.");
}
}
//在本类中调用常规内部类时可以直接new 常规内部类。
public static void main(String[] args) {
B b = new B();
b.show();
}
}
//在其他类中调用B类的方法。
//忽略导包。
public class C {
public static void main(String[] args) {
B b = new A().new B();
}
}
2.方法内部类(局部内部类):定义在方法的内部(作用域:只能在该方法的内部使用,超出该方法则无法使用)方法定义局部内部类同方 法定义局部变量一样,不能使用private、protected、public等访问修饰说明符修饰,也不能使用static修饰,但可以使用final和 abstract修饰
例题代码如下:
public class A {
public void show (){
System.out.println("类A中的show方法。");
//定义一个局部类B
class B {
System.out.println("局部内部类B");
}
}
//在main方法中调用show();
public static void main (String[] args) {
A.show();
}
}
3.匿名内部类(Anonymous inner class):就是定义一个没有名字的类,所以这个类是一次性的,不能够重复使用。也就是将类的定义与类的创建,放到一起完成,或者说在定义类的同时就创建一个类。
语法如下:
new className() {
//类体。
}
例题代码如下:
//定义一个People接口
public interface People {
//定义一个抽象方法
public void action();
}
//一个测试类
public class Test {
public static void main(String[] args) {
People students = new People() {
//实现People类里的action方法
public void action() {
System.out.println("学习");
}
};
students.action();
}
}