概念:Java中允许将一个类A声明在另一类B中,则类A就是内部类,类B成为外部类
内部类的分类:成员内部类(静态,非静态)VS局部内部类(方法内,代码块内,构造期内)
成员内部类:
一方面,作为外部类的成员
- 调用外部类的结构
- 可以被static修饰
- 可以被4中不同的权限修饰
另一方面,作为一个类:
- 类内可以定义属性、方法、构造器等
- 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
- 可以被abstract修饰
使用举例:如何实例化成员内部类的对象,如何在成员类中区分调用外部类的结构
public class InenerClassTest {
public static void main(String[] args) {
// 创建Dog实例(静态的成员内部类)
Person.Dog dog = new Person.Dog();
// 创建Bird实例(非静态的成员内部类)
Person p = new Person();
Person.Bird bird = p.new Bird();
bird.display("斑鸠");
}
}
class Person{
String name = "黄鹂";
static class Dog{
String name;
int age;
public void show(){
System.out.println("卡拉是条狗");
}
}
// protected public 缺省 private
class Bird{
String name = "喜鹊";
public Bird(){
}
public void display(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(Person.this.name);
}
}
}