含义
将一个类的定义放在另一个类的定义内部。
//一个普通的类
public class OuterClass {
//一个内部类
class InnerClass1 {
private int id = 1;
public int getId() {
return id;
}
}
//一个内部类
class InnerClass2 {
private String name;
public InnerClass2(String aName) {
name = aName;
}
public String getName() {
return name;
}
}
//一个内部类
class InnerClass3 {
private String password = "pass";
public InnerClass3() {
System.out.println("pwd:" + password);
}
public String getPwd() {
return password;
}
}
//一个方法
public void user1() {
InnerClass1 ic1 = new InnerClass1();
InnerClass2 ic2 = new InnerClass2("lilei");
System.out.println(ic1.getId() + " : " + ic2.getName());
}
//一个方法
public InnerClass3 getIC3() {
return new InnerClass3();
}
public static void main(String[] args) {
OuterClass oc = new OuterClass();
oc.user1();
//获取内部类
InnerClass3 ic3 = oc.getIC3();
/*
* 也可以获取内部类
OuterClass.InnerClass3 ic31 = oc.getIC3();
*/
System.out.println("pwd: " + ic3.getPwd());
}
}
作用
- 与外部类进行通讯:能访问其外部类的所有成员。
- 一般来说,内部类继承自某个类或某个接口,内部类可以操作外部类对象,提供了进入其外围类的窗口。
- 解决“多重继承”问题。
- 闭包与回调。
分类
- 局部内部类:在局部作用域里定义的内部类(该类只在所在的局部作用域内有效)。
- 匿名内部类:
- 嵌套类:以static修饰的内部类(静态内部类),不需要内部类对象与其外部类对象有联系,不能从嵌套类对象中访问非静态的外围类对象。
注意
- 必须使用外部类的对象的引用去创建内部类,除非内部类是静态内部类(嵌套类)。
- 创建内部类可以使用:外部类对象的引用.new 内部类 的方式进行创建。
网友评论