您的位置:首页 > 编程语言 > Java开发

Java内部类的总结

2013-03-22 17:21 393 查看
内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个

成员,并且依附于外部类而存在的。内部类可为静态,可用protected和

private修饰(而外部类只能使用public和缺省的包访问权限)。内部类

主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类

  为什么需要内部类?

  典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码

操作创建其的外围类的对象。所以你可以认为内部类提供了某种进入其外

围类的窗口。使用内部类最吸引人的原因是:

  每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类

是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有

内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问

题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完

整。接口解决了部分问题,而内部类有效地实现了“多重继承”。

  A:成员内部类

  作为外部类的一个成员存在,与外部类的属性、方法并列。

package cn.com.zxx;
/**
* 成员内部类
* @author acer
* 注意:内部类是一个编译时的概念,一旦编译成功,就会成为两个不同的类,对于如下的两个类,
* 编译完成后就变为了:outer.class 和 outer$inner.class两个类
*/
public class Outer {
private static int i =1;
private int j =10;
private int k =20;

public static void outer_f1(){

}

public void outer_f2(){

}

//成员内部类中,不能定义
//成员内部类中,可以访问外部内中的所有成员
class Inner{
//      static int inner_i =100;
int i =1;
int j =100;
void inner_f1(){
System.out.println(i);
System.out.println(j);
System.out.println(this.j);
System.out.println(Outer.this.j);
System.out.println(k);
outer_f1();
outer_f2();
}
}

//外部类的非静态方法访问内部成员类
public void outer_f3(){
Inner inner = new Inner();
inner.inner_f1();
}

//外部类的静态方法访问内部类
public static void outer_f4(){
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.inner_f1();
}

public static void main(String[] args) {
//outer_f4();
//如果要直接创建内部类的对象,不想想当然地认为只需要加上外围内的名字就可以了
//而是必须使用外部内的一个对象来创建一个内部类的对象
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.inner_f1();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息