内部类

含义:定义在类内部的类。

分类:成员内部类(静态、非静态)、匿名内部类、局部内部类(少见,了解即可)。

特点:四个修饰符随意用,class文件是“外部类¥内部类.class”。

成员内部类

位置:类中方法外。

A:非静态内部类

特性:内部类可直接访问外部类成员,外部类不可直接访问内部类非静态成员。

不能有静态方法/代码块/属性。

外部类静态方法/代码块不可访问非静态内部类。

实例:

package com.itcode.demo2;  

/**      
 * @author: 成都码到功成学员  
 * @Description:  
 *  非静态内部类 
 */  
public class TestOI {  
    public static void main(String[] args) {  
        // 访问非静态内部类的方式。  
        Outer.Inter oi = new Outer().new Inter();  
        oi.show();  
    }  
}  
class Outer {  
    private int a=10;  
    // 内部类  
    class Inter{  
        private int a =20;  
        public void show() {  
            int a = 30;  
            System.out.println("外部类成员变量:"+Outer.this.a);  
            System.out.println("内部类成员变量:"+this.a);  
            System.out.println("内部类局部变量:"+a);  
        }  
    }  
}

效果:

B:静态内部类

格式:static class Inter{}

核心理解:可以把它看做外部类的一个静态成员。

实例

匿名内部类

没有名字仅仅调用一次的类。

匿名内部类是一个隐式的继承某类或实现某该接口的子类匿名对象

使用场景:比如增加窗口关闭监听,键盘按下监听。

记住:没有修饰符和构造方法.

另外一个示例(典型的监听窗口关闭的测试类):

局部内部类

定义在方法内部,要访问必须在方法内部先访问它.

然后调用这个方法才可能访问。

实例:

内部类综合演示

示例:

效果:

Last updated

Was this helpful?