java四种内部类详解
一般来说,有4中内部类: ?一.:常规内部类没有用static修饰且定义在在外部类类体中。 ?public class MyOuter { ?// 创建内部类 ??public void innerMethod() { ???System.out.println("x is" + MyOuter.this.x); ?} ?public void outerMethod() { ?} ?public void makeInner() { ?/** ??MyOuter mo = new MyOuter(); ?} } ? :与类的其他成员相似,可以用static修饰内部类,这样的类称为静态内部类。静态内部类与静态内部方法相似,只能访问外部类的static成员,不能直接访问外部类的实例变量,与实例方法,只有通过对象引用才能访问。 </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">int</span> x=<span style="color: #800080;">100</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> MyInner{
</span><span style="color: #0000ff;">private</span> String y=<span style="color: #800000;">"</span><span style="color: #800000;">Hello!</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> innerMethod(){
System.</span><span style="color: #0000ff;">out</span>.println(<span style="color: #800000;">"</span><span style="color: #800000;">x=</span><span style="color: #800000;">"</span>+<span style="color: #000000;">x);
System.</span><span style="color: #0000ff;">out</span>.println(<span style="color: #800000;">"</span><span style="color: #800000;">y=</span><span style="color: #800000;">"</span>+<span style="color: #000000;">y);
}
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
Java05.MyInner si</span>=<span style="color: #0000ff;">new</span> Java05.MyInner();<span style="color: #008000;">//</span><span style="color: #008000;">静态内部类不通过外部实例就可以创建对象;与类变量可以通过类名访问相似</span>
<span style="color: #000000;"> si.innerMethod(); <span style="color: #000000;"> } }
三.:在方法体或语句块(包括方法、构造方法、局部块或静态初始化块)内部定义的类成为局部内部类。 ? 四.:定义类的最终目的是创建一个类的实例,但是如果某个类的实例只是用一次,则可以将类的定义与类的创建,放到与一起完成,或者说在定义类的同时就创建一个类 ????/*类体*/?} ???1.匿名内部类可以继承一个类或实现一个接口,这里的ClassOrInterfaceName是匿名内部类所继承的类名或实现的接口名。但匿名内部类不能同时实现一个接口和继承一个类,也不能实现多个接口。如果实现了一个接口,该类是Object类的直接子类,匿名类继承一个类或实现一个接口,不需要extends和implements关键字。
???/此处为类体/ ?? 3.程序代码: ?/** } ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |