Java-内部类
1.概念
-
Java中允许将一个类A声明在另外一个类B中,则类A就是内部类,类B 就称为外部类
-
内部类的分类:
- 成员内部类
- 一方面作为外部类的成员
- 可以调用外部类的结构
- 可以被static修饰
- 可以被四种不同的权限修饰符(public、private…)修饰
- 另一方面,作为一个类:
- 类内可以定义属性、方法、构造器等
- 可以被
final
修饰,表示此类不能被继承,言外之意不使用final就可以被继承 - 可以被
abstract
修饰
- 一方面作为外部类的成员
- 局部内部类(方法内,代码块内、构造器内)
2.code举例
package p7; public class InnerClassTest { public static void main(String[] args) { //创建dog实例(静态成员内部类) Person.Dog dog = new Person.Dog(); dog.show(); //创建Bird实例(非静态成员内部类) Person p = new Person(); Person.Bird bird = p.new Bird(); bird.sing(); //区分同名的这个变量如何使用 bird.display("布谷"); } } class Person { String name = "小明"; int age; public void eat() { System.out.println("人吃饭"); } // 静态成员内部类 static class Dog { String name; int age; public void show() { System.out.println("卡拉是一条狗"); } } // 非静态成员内部类 class Bird { String name = "玫瑰"; public Bird() { } public void sing() { System.out.println("安康是一只小小鸟"); //调用外部类的属性 Person.this.eat(); } public void display(String name) { System.out.println(name); // 方法的形参 System.out.println(this.name); //内部类的属性 System.out.println(Person.this.name);// 外部类的属性 } } // 方法体内部的类 局部内部类 public Comparable getComparable() { // 局部内部类的使用 class Mycomparable implements Comparable { @Override public int compareTo(Object o) { return 0; } } return new Mycomparable(); } { // 代码块局部内部类 class BB { } } public Person() { //构造器局部内部类 class CC { } } }
- 成员内部类