做数据网站,响应式网站建设资讯,做网站哪家,wordpress下拉翻页插件Java 的内部类
在Java中#xff0c;允许一个类的定义位于另一个类的内部#xff0c;前者称为内部类#xff0c;后者称为外部类。Inner class一般用在定义它的类或语句块之内#xff0c;在外部引用它时必须给出完整的名称。 Inner class的名字不能与包含它的类名相同#…Java 的内部类
在Java中允许一个类的定义位于另一个类的内部前者称为内部类后者称为外部类。Inner class一般用在定义它的类或语句块之内在外部引用它时必须给出完整的名称。 Inner class的名字不能与包含它的类名相同lInner class可以使用外部类的私有数据因为它是外部类的成员同一个类的成员之间可相互访问。而外部类要访问内部类中的成员需要:内部类.成员或者内部类对象.成员。分类成员内部类static成员内部类和非static成员内部类 局部内部类不谈修饰符、匿名内部类
class A {private int s;public class B{public void mb() {s 100; System.out.println(在内部类B中s s);} }public void ma() {B i new B();i.mb();}
}public class Test { public static void main(String args[]){A o new A();o.ma();}
}
内部类特性
Inner class作为类的成员 可以声明为final的和外部类不同Innerclass可声明为private或protectedInnerclass 可以声明为static的但此时就不能再使用外层类的非static的成员变量lInner class作为类 可以声明为abstract类因此可以被其它的内部类继承【注意】非static的内部类中的成员不能声明为static的只有在外部类或static的内部类中才可声明static成员。
匿名内部类
匿名内部类不能定义任何静态成员、方法和类只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面用其隐含实现一个接口或实现一个类。
new 父类构造器实参列表|实现接口(){
//匿名内部类的类体部分
}
interface A{public abstract void fun1();
}
public class Outer{public static void main(String[] args) {new Outer().callInner(new A(){//接口是不能new但此处比较特殊是子类对象实现接口只不过没有为对象取名public void fun1() {System.out.println(“implement for fun1);}});// 两步写成一步了}public void callInner(A a) {a.fun1();}
}