*内部类的定义:
由于在类的内部可以定义成员变量和方法,那么在类的内部再定义一个类,就称为内部类。比如在类Outer的内部再定义一个类Inner,那么Inner就称为内部类,而Outer则称为外部类。
内部类可以访问外部类的成员变量和方法:
class Outer{
private String info ="hello!";
class Inner{
public void print(){
System.out.println(info);
}
}
public void fun(){
new Inner().print(); //通过创建内部类的对象调用内部类的方法
}
}
如果把内部类拿到外部,要使用访问原outer类的属性则要如下代码: class Outer{ class Inner{ 代码复杂了很多,所以内部类的好处就是方便访问外部类的私有属性。 *使用static定义内部类 如果将内部类声明为static类型。此内部类就成了外部类,它仍能访问原外部类的静态属性。 *在外部访问内部类 一个内部类除了可以通过外部类访问,也可以直接在其他类中进行调用,调用的基本格式为: 外部类.内部类 内部类对象 = 外部类实例.new 内部类(); 以上的格式必须要找到外部类的实例化对象之后,才可以通过外部类的实例化对象去实例化内部类的对象。 例:Outer out = new Outer(); Outer.Inner in = out.new Inner(); *在方法中定义内部类 也可以在方法中定义一个内部类,但是在方法中定义的内部类不能直接访问方法中的参数,如果方法中的参数要被内部类访问,则必须加上final关键字。
class TestInner{
public static void main(String[] args){
new Outer().fun();
}
}
private String info ="hello!";
public String getInfo(){
return this.info;
}
public void fun(){
new Inner(this).print();
}
}
private Outer out = null;
public Inner(Outer out){
this.out = out;
}
public void print(){
System.out.println(out.getInfo());
}
}
class TestInner{
public static void main(String[] args){
new Outer().fun();
}
}

被折叠的 条评论
为什么被折叠?



