Java中的内部类指的是定义在另一个类中的类,由于内部类与外部类存在较为紧密的联系,所以内部类可以方便地访问外部类的成员变量和方法。
非静态内部类是最常见的一种内部类,也称为成员内部类。它的定义方式如下:
public class Outer { private int x = 10; class Inner { public void printX() { System.out.println(x); } } }
在上面的例子中,Inner类就是一个非静态内部类,它可以直接访问Outer类的成员变量x。在外部类中创建一个非静态内部类的实例的方式如下:
Outer outer = new Outer(); Outer.Inner inner = outer.new Inner();
需要注意的是,在外部类的静态方法中无法直接创建非静态内部类的实例,需要先创建外部类的对象,再通过这个对象来创建非静态内部类的实例。
静态内部类是在一个类中定义的静态类,它不需要依赖于外部类的实例就可以被创建。
public class Outer { private static int x = 10; static class Inner { public void printX() { System.out.println(x); } } }
在上面的例子中,Inner类就是一个静态内部类,它可以直接访问Outer类的静态成员变量x。在外部类中创建一个静态内部类的实例的方式如下:
Outer.Inner inner = new Outer.Inner();
需要注意的是,静态内部类不能访问外部类的非静态成员变量和方法。
匿名内部类是一种没有名称的内部类,通常用于实现某个接口或继承某个类的情况。
public class Outer { public void test() { new Thread(new Runnable() { @Override public void run() { System.out.println("Hello World!"); } }).start(); } }
在上面的例子中,我们通过匿名内部类实现了Runnable接口,并在新线程中打印了"Hello World!"。
需要注意的是,匿名内部类不能有构造方法,因为它没有名称。
本文介绍了Java中的三种内部类:非静态内部类、静态内部类、匿名内部类的定义、使用方法及注意事项,并附带了对应的代码案例。在实际开发中,内部类的使用可以提高代码的可读性和灵活性,但也需要注意内存泄漏等问题。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com