分类: Java
2008-04-26 15:25:50
一、内部类(嵌套类)是指在一个类中定义的类。关于内部类的几点说明:
1、内部类可以直接访问嵌套它的类的成员,包括private成员。但是内部类的成员却不能被嵌套它的类直接访问。如:
class A
{
int x = 100;
private String name;
class B
{
int y = 500;
}
}
B可以访问到x、name,但A访问不到y。
2、内部类对象保存了一个对外部类对象的引用。当内部类的成员方法试图访问某一变量时,它查找范围的先后顺序是这样的:成员方法->内部类->外部类。也就是说它在本身类中找不到该变量时,会自动到外部类查找。
二、什么情况下使用内部类 举个例子:
class Outer
{
int outer_x = 100;
void func()
{
Inner in = new Inner();
in.show();
}
public static void main(String[] args)
{
Outer ot = new Outer();
ot.func();
}
}
class Inner
{
void show()
{
Outer ot = new Outer();
System.out.println("outer_x = "+ot.outer_x);
}
}
如果要想在outer类中访问Inner中的show,而Inner中的show又要调用Outer中的某个成员变量,把上面代码的Inner类该为内部类,就可以不必在Inner中先创建Outer类了。
三、如果内部类前面用static修饰,则这个内部类相当于是外部类,虽然他还是写在一个类的里面。
四、内部类除了在类的内部定义外,还可以在类的方法中定义
五、内部类如何被外部类引用?
内部类要用public关键字修饰。举个例子
class Outer
{
private int size = 10;
public class Inner
{
public void doStuff()
{
System.out.println(++size);
}
}
}
public class TestInner
{
public static void main(String[] args)
{
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.doStuff();
}
}