Java中的内部类:成员内部类、局部内部类、匿名内部类


Java中的内部类:成员内部类、局部内部类、匿名内部类

1. 内部类的定义

内部类是指定义在另一个类内部的类,与外部类形成了一种包含关系。在Java中,内部类可以分为三种类型:成员内部类、局部内部类、匿名内部类。

2. 成员内部类

成员内部类是定义在另一个类内部的类,与外部类形成了一种包含关系。成员内部类可以访问外部类的所有成员变量和方法,而且可以定义自己的成员变量和方法。以下是成员内部类的定义方式:

public class Outer {
    private int x = 10;
    class Inner {
        void display() {
            System.out.println("x = " + x);
        }
    }
}

在上述代码中,Inner类是Outer类的成员内部类,可以直接访问Outer类的私有变量x,并在display()方法中打印x的值。

3. 局部内部类

局部内部类是定义在方法内部的类,只在该方法内部可见。局部内部类可以访问外部类的所有成员变量和方法,但是如果要访问方法内的局部变量,则必须声明为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类型的局部变量。

4. 匿名内部类

匿名内部类是一种没有类名的局部内部类,通常用于简化代码编写。匿名内部类可以实现接口、继承类或者抽象类,但是不能定义构造函数,只能使用一次。以下是匿名内部类的定义方式:

public class Outer {
    public void display() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello World!");
            }
        }).start();
    }
}

在上述代码中,Runnable是一个接口,通过匿名内部类的方式实现了run()方法,并在display()方法中启动了一个线程。需要注意的是,由于匿名内部类没有类名,所以必须在new关键字后面指定接口、继承类或者抽象类。

5. 总结

本文介绍了Java中的三种内部类:成员内部类、局部内部类、匿名内部类。通过相应的代码案例,为编程小白提供了易于学习的教学。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论