匿名内部类细节
匿名内部类实践
1.当做实参直接传值,简洁高效
传统方式要先写一个类–>实现IL,如下
2.匿名内部类涉及 继承,多态,动态绑定,内部类
package 内部类;
public class 匿名内部类测试
{
public static void main(String[] args)
{
CellPhone cellPhone = new CellPhone();
cellPhone.alarmclock(new Bell()
{
//韩老师解读:
//1.传递的是实现了Bell接口的匿名内部类 InnerClassExercise02$1
//2. 重写了 ring
//3. Bell bell = new Bell() 运行起来实际上类似于此段代码
// {
// @Override
// public void ring()
// {
// System.out.println("小伙伴下课了");
// }
@Override
public void ring()
{
System.out.println("懒猪起床了");
}
});
cellPhone.alarmclock(new Bell()
{
@Override
public void ring()
{
System.out.println("小伙伴下课了");
}
});
}
}
interface Bell
{
void ring();
}
class CellPhone{
public void alarmclock(Bell bell){
bell.ring();
}
}
成员内部类
成员内部类是定义在外部类内的成员位置上,这是区别于局部内部类和匿名内部类的主要特点!!
成员内部类的使用
上图代码控制台结果如下
外部其它类 使用 成员内部类的三种方式,本质及常用的只有前两点
静态内部类
静态内部类 , 是可以可以通过类名直接访问的(前提是满足访问权限)
外部其他类访问静态内部类
练习题