内部类(1)
类的五大成员:属性、方法、构造方法、代码块、内部类
内部类就是在一个类里面,再定义一个类
比如,在A类的内部定义B类,B类就被称为内部类
例:
汽车的发动机、ArrayList的迭代器、人的心脏
public class Outer {//外部类
public class Inner{//内部类
}
}
内部类的特点:
- 内部类表示的事物是外部类的一部分
- 内部类单独出现没有任何意义
- 内部类可以直接访问外部类的成员,包括私有
- 外部类要访问内部类的成员,必须创建对象
局部内部类
1.局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内;
2.局部内部类不可使用权限修饰符 静态(static)修饰符进行修饰 同局部变量相同;
3.局部内部类可以直接访问方法中的属性;
4.局部内部类 可以直接访问方法外部类中属性和方法;
5.局部内部类 创建对象 要在方法内部 局部内部类的外部声明。
匿名内部类
匿名内部类只是没有类名,其他的都具备
匿名内部类的特点:
匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
例如:
// 实现关系下的匿名内部类:
interface Dao {void show();
}public class AnonymousDemo {//编写回调方法 :callInnerpublic void callInner(){// 接口关系下的匿名内部类new Dao(){//实现子类 但是没有名字 所以叫匿名内部类@Overridepublic void show() {System.out.println("接口方法...");}}.show();}
}
// 测试:
public class Demo {public static void main(String[] args) {AnonymousDemo anonymousDemo = new AnonymousDemo();anonymousDemo.callInner();}
}