内部类
内部类:
一般用于类的设计.
内部类访问特点:
修饰符:(内部类被定义在成员位置上,就能被成员修饰符所修饰)
public:公有
private:仅在此类下有效
默认权限:在其他类中,直接访问外部类中内部类的成员。:Outer.Inner i = new Outer().new Inner()
static:外部类一加载,内部类就存在了。如果内部类实景态的,就相当于外部类。Outer.Inner in = new Outer.Inner()
如果内部类是静态的,成员也是静态的:Outer.Inner.function()
如果内部类中定义了内部成员,该内部类也必须是静态的。
内部类细节:
内部类访问外部类成员,因为内部类持有了外部类的引用。
局部内部类:内部类可以存放在局部位置上。
局部内部类:内部类在局部的位置上只能访问局部中被final修饰的局部变量。(是一种规则)
匿名内部类:就是内部类的简写格式。(为了方便)
必须有前提:
内部类必须继承或者实现一个外部类或者接口。
new Demo(){}这是创建Demo子类对象。(只有子类覆盖方法)
匿名内部类:其实就是一个匿名子类对象。
格式: new 父类or接口(){子类内容}.方法
匿名内部类应用:
正常格式:
inner in = newinter(){..}是多态,父类(接口)的名字命名匿名内部类。
正常格式
匿名内部类格式:
匿名内部类是成员,是非静态的,主方法是静态的不能调用非静态的方法。
面试题: