来给大家介绍一下深入了解Java内部类的用法的攻略。
什么是Java内部类
Java内部类是定义在另一个类中的类,它可以访问外部类的所有成员和方法,而且可以与外部类进行私有访问和更好地封装性。Java的内部类分为四种:成员内部类、静态内部类、局部内部类和匿名内部类。
成员内部类
成员内部类即在类中定义的类,其特点是具有与外部类相同的访问权限,即public,protected和private。成员内部类可以访问外部类的所有成员属性和方法,即使是private类型的。示例代码如下:
public class OuterClass {
private int num = 10;
private class InnerClass {
public void print() {
System.out.println("这是成员内部类num值为:" + num);
}
}
public void display() {
InnerClass inner = new InnerClass();
inner.print();
}
}
静态内部类
静态内部类是指在一个类中定义的静态类。与成员内部类不同的是静态内部类不需要依赖于外部类,因此无法访问外部类的非静态成员,只能访问外部类的静态成员和方法,而且可以直接用外部类名点调用。示例代码如下:
public class OuterClass {
private static int num = 10;
public static class InnerClass {
public void print() {
System.out.println("这是静态内部类num值为:" + num);
}
}
}
局部内部类
局部内部类也叫方法内部类,即在方法内部定义的类。局部内部类可以访问方法的局部变量,但只能访问final修饰的局部变量,因为final变量在方法结束时不会被销毁。示例代码如下:
public class OuterClass {
public void display(final int num) {
class InnerClass {
public void print() {
System.out.println("这是局部内部类num值为:" + num);
}
}
InnerClass inner = new InnerClass();
inner.print();
}
}
匿名内部类
匿名内部类是指没有类名的内部类,直接使用new来创建。通常用于继承抽象类或实现接口,可以简化代码,但同时也会增加代码的难度。示例代码如下:
public interface Animal {
void eat();
}
public class Test {
public static void main(String[] args) {
Animal animal = new Animal() {
@Override
public void eat() {
System.out.println("这是匿名内部类实现的方法");
}
};
animal.eat();
}
}
以上就是Java内部类的四种类型,各种类型的内部类都有自己的特点和用处,开发者可以根据需要选择合适的内部类。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入了解Java内部类的用法 - Python技术站