Java中的内部类:成员内部类、局部内部类、匿名内部类
内部类是指定义在另一个类内部的类,与外部类形成了一种包含关系。在Java中,内部类可以分为三种类型:成员内部类、局部内部类、匿名内部类。
成员内部类是定义在另一个类内部的类,与外部类形成了一种包含关系。成员内部类可以访问外部类的所有成员变量和方法,而且可以定义自己的成员变量和方法。以下是成员内部类的定义方式:
public class Outer { private int x = 10; class Inner { void display() { System.out.println("x = " + x); } } }
在上述代码中,Inner类是Outer类的成员内部类,可以直接访问Outer类的私有变量x,并在display()方法中打印x的值。
局部内部类是定义在方法内部的类,只在该方法内部可见。局部内部类可以访问外部类的所有成员变量和方法,但是如果要访问方法内的局部变量,则必须声明为final类型。以下是局部内部类的定义方式:
public class Outer { public void display() { final int x = 10; class Inner { void print() { System.out.println("x = " + x); } } Inner inner = new Inner(); inner.print(); } }
在上述代码中,Inner类是Outer类的局部内部类,只能在display()方法内部访问。需要注意的是,x变量必须声明为final类型,这是因为在Java中,局部内部类不能访问非final类型的局部变量。
匿名内部类是一种没有类名的局部内部类,通常用于简化代码编写。匿名内部类可以实现接口、继承类或者抽象类,但是不能定义构造函数,只能使用一次。以下是匿名内部类的定义方式:
public class Outer { public void display() { new Thread(new Runnable() { @Override public void run() { System.out.println("Hello World!"); } }).start(); } }
在上述代码中,Runnable是一个接口,通过匿名内部类的方式实现了run()方法,并在display()方法中启动了一个线程。需要注意的是,由于匿名内部类没有类名,所以必须在new关键字后面指定接口、继承类或者抽象类。
本文介绍了Java中的三种内部类:成员内部类、局部内部类、匿名内部类。通过相应的代码案例,为编程小白提供了易于学习的教学。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com