讲述java中内部类的研究


  JAVA从JDK1.1开始引入了内部类, 可以参见代码,觉得 好处便是设计类的时候 可以偷懒,呵呵 。重要是 可以 引用类的内部 其余元素,差不多是把这个内部类当成原类的元素 。还有 可以 潜藏类的一些设计细节, 好处还是众多的 。

定义两个接口

package interfacepackage;

public interface Destination {

String readLabel();

}

package interfacepackage;

public interface Contents {

int value();

}

一个类,而且加有测试代码

package debug;

import interfacepackage.Contents;

import interfacepackage.Destination;

public class Tester {

private int valueRate = 2;

private class PContent implements Contents {

private int i = 11 * valueRate;

public int value() {

return i;

}

}

protected class PDestination implements Destination {

private String label;

private PDestination(String whereTo) {

label = whereTo;

}

public String readLabel() {

return label;

}

}

public Destination dest(String s) {

return new PDestination(s);

}

public Contents cont() {

return new PContent();

}

public static void main(String args[])

{

Tester p = new Tester();

Contents c = p.cont();

System.out.println(c.value());

Destination d = p.dest("天外水火");

System.out.println(d.readLabel());

System.out.println("done");

}

}

  上面的代码是内部动态类,那么内部静态类是不是也 可以呢?答案是 可以的,然而静态内部类是 无奈 引用类的 其余非静态元素的,例如上例中的PContent 内部类假如改为static类,是 无奈 引用valueRate 属性的,这样是会报编译 舛误的,然而假如valueRate 假如也改为static是 可以运行的 。