*内部类:
是定义在一个类的内部的新类型.即内部类,另外一个类称之为外部类
根据位置不同:
--成员内部类: (非静态内部类)
--匿名内部类:
--方法内部类(不常用):定义在方法中,相当于局部变量,仅限于在方法中使用
定义时不能使用修饰词,可以直接访问外部类的非静态成员变量
--静态内部类(不常用):以类的成员来定义的,有static修饰,可以直接访问外部类的静态成员
(1)成员内部类:
以类的成员来定义,可以使用任何(4种)修饰词
内部类可以访问外部类的成员
方法内隐藏了一个指向外部类对象的引用
外部类名.this.
使用: 先创建一个外部类的对象outer
然后使用外部类对象去使用new 调用内部类的构造器实例化
(2)匿名内部类:
没有名字的类型,写在外部类的方法中,只用一次,不需要定义类的结构
通常都是为了实现接口/抽象类/某一现有子类
子类没有名称,所以称之匿名
当我们想使用某一个类/抽象类/接口的子类时,
因为我们只想用一次,就可以不用去定义子类的结构
所以写法上,我们可以向上造型
父类型 变量名 = new 父类名(){
重写接口/抽象类里的所有抽象方法
重写实现方法
};
--使用匿名内部类的方式创建接口 InterX的对象
接口中有两个抽象方法:
(1)计算a和b的和
(2)计算a与b的乘积
========================================================================
*外部类访问内部类的成员:
在外部类添加一个内部类的成员变量进行访问