普通内部类
声明在类的内部:
class Outer{ int param1; String str; Inter inter = new Inter(); void test(){ System.out.PRintln("I am test method of class Outer"); // 可以在外部类的方法中使用内部类,使用方法 //和正常类一样,先实例化对象后使用 Inter inter = new Inter(); inter.testInter(); } class Inter{ int param2; void testInter(){ System.out.println("I am test method of class Inter"); } }}class Test{ public static void main(String [] args){ //如果要在外部类以外的地方使用外部类的内部类,需要先在外 //部类里创建内部类对象,然后通过外部类对象引用内部类对象 Outer outer = new Outer(); outer.inter.testInter(); }}普通内部类里面不能定义静态方法和静态成员变量普通内部类可以访问外部类的所有成员变量和方法
方法内部的内部类class Outer{ int param1; String str; Inter inter = new Inter(); void test(){ System.out.println("I am test method of class Outer"); class Inter{//方法内的内部类只能在方法内使用 int param2; void testInter(){ System.out.println("I am test method of class Inter"); } } }}3. 静态内部类class Outer{ int param1; String str; Inter inter = new Inter(); void test(){ System.out.println("I am test method of class Outer"); //外部类访问静态内部类方法或者变量,可以直接使用 内部类.方法名或变量名 Inter.testInter(); } static class Inter{ int param2; void testInter(){ //param1 = 1;静态内部类不能访问外部类的非静态成员变量和方法,可以访问外部类的常量。因为静态类在类加载时就已经完成初始化,final修饰的常量也是同理。而非静态变量和方法是在对象创建时才分配内存,所以静态类不能访问 System.out.println("I am test method of class Inter"); } }}class Test{ public static void main(String [] args){ //如果要在外部类以外的地方使用外部类的静态内部类, //可以直接使用Outer.Inter.变量名或方法名 Outer.Inter.testInter(); }}4. 匿名内部类class Listner{ int a; void onClick(){ System.out.println("click事件"); }}class Outer{ int p; String str; Listner lis = new Listner(){ void onClick(){ //重写父类的方法; } }}新闻热点
疑难解答