在Android代码中大量使用了内部类,在类的内部重新定义一个类,这个新类就是内部类,好处是可以访问外部类的私有属性
1.一般内部类
class Outer{
private int num;
class Inner{
public void printInfo(){
System.out.println(num);
}
}
}
public class Test { //必须大写和文件名一致
public static void main(String args[]){
Outer o = new Outer();
Outer.Inner i = o.new Inner();
i.printInfo();
}
}
- printInfo 内部类的方法访问了外部类的私有属性
- 内部类必须先实例化外部类
2.静态内部类
class Outer {
static class Inner {
}
}
- 使用示例:
Outer.Inner a = new Outer.Inner( );
class Outer{
private static int num;
static class Inner{
public void printInfo(){
System.out.println(num);
}
}
}
public class Test { //必须大写和文件名一致
public static void main(String args[]){
Outer.Inner a = new Outer.Inner();
a.printInfo();
}
}
- 用static声明的内部类就变成了外部类;
- 它只可以访问外部类的static属性,static属性不需要实例化就存在的
3.匿名内部类
interface A {
public void printInfo( );
}
class B implements A {
public void printInfo( ) {
System.out.println("Hello, world!");
}
}
public class Anony {
public static void testFunc(A a) {
a.printInfo( );
}
public static void main(String args[]) {
testFunc(new B());
testFunc(new A() {
public void printInfo() {
System.out.println("Hello, world!");
}
});
}
}