内部类
含义:定义在类内部的类。
分类:成员内部类(静态、非静态)、匿名内部类、局部内部类(少见,了解即可)。
特点:四个修饰符随意用,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?