内部类概念
在A类的内部中若存在一个B类,则B类为内部类,A类是B类的外部类。
public class A {
class B {
// 内部类
}
}
内部类可以调用外部类的方法和属性,外部类需通过创建内部类对象来调用内部类的方法和属性。
外部类.内部类 对象 = new 外部类().new 内部类();
匿名内部类
匿名内部类就是没有名字的内部类,可以简化实现接口的步骤。
实现条件:
必须实现一个父接口或者继承父类。
new 父类或接口 {
@Override
public void 方法名() {
代码块;
}
}
使用示例:
// 定义接口
public interface People {
void eat();
}
// 匿名内部类实现
People xiaoming = new People() {
@Override
public void eat() {
System.out.println("小明需要吃饭。");
}
};
xiaoming.eat(); // 通过命名调用
双大括号初始化:
addOption(new HashMap<Integer,String>(){{
put(1, "test");
put(2, "work");
}}, quesId);
第一层括号表示定义了一个匿名内部类,第二层括号表示构造方法。
学习心得:匿名内部类可以快速创建接口实现类,在回调函数和事件处理中非常有用。