1.定义
内部类,即将一个类定义在另一个类内部。
2.规定
2.1权限修饰符
外部类只能使用public、default修饰,
内部类可以使用private、public、protect、default,(即全部修饰符)修饰。
2.2成员
内部类不能与外部类重名,
不能在内部类中定义static属性、方法和类,但可以定义static final的常量类型。
2.3访问调用
内部类可以直接访问外部类的属性和方法,包括private修饰的
外部类访问内部类的属性和方法必须先创建内部类实例
如果内外有同名,内调外,加上类名.this.方法或者属性名来调用
3.实例化
内部类是外部类的一个成员。
在成员内部类中访问外部类的成员方法和属性:外部类名.this.成员方法(或者属性)
在内部类之外创建成员内部类的实例:外部实例对象名.内部类名 实例名 = new 内部类构造方法
4.静态、匿名
4.1静态内部类
静态内部类,即用static修饰的内部类。
静态内部类的使用方法和静态方法的使用方法相同,即静态内部类只能调用外部类的静态属性和方法。
对静态内部类的调用可以视为对一个静态方法的调用。
4.2匿名内部类
匿名内部类,即没有名称的内部类。
形式上是直接new接口或者抽象类,实际上是产生一个匿名的实现类。
new匿名内部类的前提是必须继承一个父类或者实现一个接口,
匿名内部类中不能使用static修饰符,
匿名内部类就是一个普通的实现类,里面方法属性不限量。可重载可自定义等等。
当匿名内部类想要调用自己扩展的方法时候注意:
因为此时对象是父类型,并没有用子类去实现父类,所以调用不到自己特有的方法,又因为这里没有实现类供调用来强转,
所以匿名内部类要是想调用自己扩写的方法,只能在创建的时候一并进行调用。