Outer.java
代码:
/**
* 内部类:
* 内部类与其所在的外层来之间存在着逻辑上的依赖关系--内部类的对象布恩给你单独存在,他必须依赖一个其外层类的对象
*
* 如:Outer outer=new Outer();
* Inner inner=outer.new Inner();
*
* 在内部类中可以之间访问其外层类中的成语,包括属性和方法,即使这些属性和方法是private的;
*
* 内部类可以声明为抽象类,因此可以被其他的内部类继承,也可以申明为final的;
*
* 和外层类不同,内部类可以声明为private,public,protected
*
* 内部类中出现变量命名冲突时,可以使用内部类对象的特殊属性 "<外层类名>.this" 来访问其所依赖外层类对象的成员
*
*
*/
package com.b510.examples;
/**
* @author Hongten
*
* @time 2011-8-10 2011
*/
public class Outer {
private int number;
/**
* 经过编译会生成: Outer$Inner.class的class文件
*
* @author Hongten
*
* @time 2011-8-10 2011
*/
public class Inner {
private int number;
public void displayInner() {
System.out.println("内部类Inner中的number :" + this.getNumber());
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
public void displayOuter(Inner inner) {
inner.displayInner();
System.out.println("外部类Outer中的number : " + this.getNumber());
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
*************************Hongten******************************
测试类:
TestInner.java
代码:
/**
*
*/
package com.b510.examples.action;
import com.b510.examples.Outer;
import com.b510.examples.Outer.Inner;
/**
* @author Hongten
*
* @time 2011-8-10 2011
*/
public class TestInner {
public static void main(String[] args) {
Outer outer = new Outer();
//直接使用内部类,用法是先实例一个该内部类的外部类,用外部类的实例来new该内部类
Inner inner = outer.new Inner();
inner.setNumber(30);
outer.setNumber(25);
outer.displayOuter(inner);
}
}
*************************Hongten******************************
运行效果:
内部类Inner中的number :30
外部类Outer中的number : 25
*************************Hongten******************************