创建类对象
为什么在创建内部类对象之前要先创建外部类对象,而不能直接用Inner i=HelloWorld.new Inner();
为什么在创建内部类对象之前要先创建外部类对象,而不能直接用Inner i=HelloWorld.new Inner();
2015-09-17
你这里的Inner是一个静态内部类吧!你把这个内部类想象成一个普通的静态方法、或者是静态属性,那么你要怎么去调用这个方法和属性?那肯定是类名.方法(或属性):比如HelloWorld.print();那么静态内部类也是一样,你要声明它的对象,得用外部类名去调用:即HelloWorld.new Inner();
然后前面加上new:new HelloWorld.new Inner();(不是new HelloWorld .new Inner);
你看一下这个代码,里面有四种内部类对象的声明,把他们想成一个方法,这样一个方法该怎么去调用,那么这个类就如何去声明。代码如下:
package com.briup.pojo;
public class InnerClassTest {
public void Test(){
class LocalInner{ //局部内部类,与局部变量类似,只能在此方法里声明
LocalInner li = new LocalInner(); //声明局部内部类
}
}
public void getStudent(){
Adb a = new Adb(){ //匿名内部类,没有名字的内部类,定义类时就同时声明了
//Adb是一个抽象类,最下面有代码
};
}
public static class StaticInner{ //静态内部类,想象静态方法是怎么调用的
}
}
class MemberInner{ //成员内部类,你可以把它理解成一个特殊的属性
}
}
public static void main(String[] args) {
StaticInner s = new InnerClassTest.StaticInner(); //声明静态内部类
MemberInner m = (new InnerClassTest()).new MemberInner(); //声明成员内部类
}
}
---------------------------
package com.briup.pojo;
public abstract class Adb{
}
把内部类与处于同样位置的方法、属性类比,就知道如何去声明了。
举报