java中允许将一个类A声明在另一个类B中,A就是内部类,B是外部类
分类
成员内部类
包括静态成员内部类,非静态成员内部类
* 作为外部的成员:
* 调用外部类的结构
* 可以被static修饰
* 可以被四种不同的权限修饰
* 作为一个类:
* 类内可以定义属性,方法,构造器等
* 可以被final修试,表示此类不能被继承。
* 可以被abstract修饰
class Alphabet {
private String name = "字母表";
//非静态成员内部类
class B {
private String name = "B";
public B() {
}
public void B1() {
System.out.println("这是字母B");
}
//在成员内部类中区分调用外部类的结构
public void display(String name){
//形参:
System.out.println(name);
//内部类的属性:
System.out.println(this.name);
//外部类的属性
System.out.println(Alphabet.this.name);
}
}
//静态成员内部类
static class C {
public C(){
// 局部内部类
class c {
public void c1(){}
}
}
public void C1(){
System.out.println("这是字母C");
}
}
}
能解决的问题
关注如下3个问题
* 如何实例化成员内部类的对象
* 如何在成员内部类中区分调用外部类的结构
* 开发中局部内部类的使用
如何实例化成员内部类的对象
如何在成员内部类中区分调用外部类的结构
public static void main(String[] args) {
//实例化成员内部类的对象
//创建静态成员内部类
Alphabet.C C = new Alphabet.C();
C.C1();
//创建非静态成员内部类
Alphabet alphabet = new Alphabet();
Alphabet.B b = alphabet.new B();
b.B1();
}
开发中局部内部类的使用
//开发中局部内部类的使用
//返回实现了一个Comparable接口类的对象
public Comparable getComparable(){
//创建一个实现了Comparable接口的类:局部内部类
// 方式一
class MyComparable implements Comparable{
@Override
public int compareTo(Object o) {
return 0;
}
}
return new MyComparable();
// 方式二
/* return new Comparable() {
@Override
public int compareTo(Object o) {
return 0;
}
};*/
}