八、面向对象程序设计-内部类

在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!");
           }
         });
    }
}
发布了29 篇原创文章 · 获赞 9 · 访问量 1878

猜你喜欢

转载自blog.csdn.net/m0_46291920/article/details/104528237