接口类型作为形式参数的问题
1)提供给接口的子实现类
2)内部类的方式
这里就2)进行展开书写。
什么叫内部类?
内部类顾名思义,在一个类的内部存在的类就叫做内部类。
内部类的特点
内部类可以直接访问外部类的
所有,包括私有。
内部类如果需要被外部类访问,那么,需要外部类创建内部类的对象间接访问。(内部类好像更懂外部类。。。)
外部类要访问内部类(非静态的内部类)的成员方法:
格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
例子:
//需求:访问内部类中的成员方法 class Outer{ int a = 10 ; class Inner{ public void show() { System.out.println(a);//内部类可以直接访问外部类的成员位置 } } } public class TestDemo1 { public static void main(String[] args) { Outer.Inner s = new Outer().new Inner(); s.show(); } }
内部类的分类
内部类又可以分成:
成员内部类:内部类在外部类的成员位置。
成员外部类:内部类在外部类的局部位置(在外部类的某一个方法中)。
关于成员内部了的修饰符
private可以保证安全!我们知道外部类可以创建内部了对象,这对于内部类来说有失安全,被private修饰的内部类不能被外部类创建对象。
static可以把静态的内部类看成是外部类的成员。
匿名内部类
new 类名或者接口名{
方法重写();
}
方法重写();
}
匿名内部类本质:是继承了该类或者实现了该子类对象