J2SE 内部类 [Inner]

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******************************


 

原文地址:https://www.cnblogs.com/hongten/p/2134021.html