内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显着,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦。学会使用内部类,是掌握Java高级
编程的一部分,它可以让你更优雅地设计你的
程序结构。下面从以下几个方面来介绍:
UgV北方站长站 第一次见面UgV北方站长站
public interface Contents {UgV北方站长站
int value();UgV北方站长站
}UgV北方站长站
public interface Destination {UgV北方站长站
String readLabel();UgV北方站长站
}UgV北方站长站
public class Goods {UgV北方站长站
private class Content implements Contents {UgV北方站长站
private int i = 11;UgV北方站长站
public int value() {UgV北方站长站
return i;UgV北方站长站
}UgV北方站长站
}UgV北方站长站
protected class GDestination implements Destination {UgV北方站长站
private String label;UgV北方站长站
private GDestination(String whereTo) {UgV北方站长站
label = whereTo;UgV北方站长站
}UgV北方站长站
public String readLabel() {UgV北方站长站
return label;UgV北方站长站
}UgV北方站长站
}UgV北方站长站
public Destination dest(String s) {UgV北方站长站
return new GDestination(s);UgV北方站长站
}UgV北方站长站
public Contents cont() {UgV北方站长站
return new Content();UgV北方站长站
}UgV北方站长站
}UgV北方站长站
class TestGoods {UgV北方站长站
public static void main(String[] args) {UgV北方站长站
Goods p = new Goods();UgV北方站长站
Contents c = p.cont();UgV北方站长站
Destination d = p.dest("Beijing");UgV北方站长站
}UgV北方站长站
}UgV北方站长站
在这个例子里类Content和GDestination被定义在了类Goods内部,并且分别有着protected和private修饰符来控制访问级别。Content代表着Goods的内容,而GDestination代表着Goods的目的地。它们分别实现了两个接口Content和Destination.在后面的main方法里,直接用 Contents c和Destination d进行操作,你甚至连这两个内部类的名字都没有看见!这样,内部类的第一个好处就体现出来了??隐藏你不想让别人知道的操作,也即封装性。UgV北方站长站
UgV北方站长站
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面