提起java內(nèi)部類(Inner Class)可能很多人不太熟悉,實際上類似的概念在C++里也有,那就是嵌套類(Nested Class), 關(guān)于這兩者的區(qū)別與聯(lián)系,在下文中會有對比。內(nèi)部類從表面上看,就是在類中又定義了一個類(下文會看到,內(nèi)部類可以在很多地方定義),而實際上并沒有那么 簡單,乍看上去內(nèi)部類似乎有些多余,它的用處對于初學(xué)者來說可能并不是那么顯著,但是隨著對它的深入了解,你會發(fā)現(xiàn)Java的設(shè)計者在內(nèi)部類身上的確是用 心良苦。學(xué)會使用內(nèi)部類,是把握J(rèn)ava高級編程的一部分,它可以讓你更優(yōu)雅地設(shè)計你的程序結(jié)構(gòu)。下面從以下幾個方面來介紹:
public interface Contents {
int value();
}
public interface Destination {
String readLabel();
}
public class Goods {
PRivate class Content implements Contents {
private int i = 11;
public int value() {
return i;
}
}
protected class GDestination implements Destination {
private String label;
private GDestination(String whereTo) {
label = whereTo;
}
public String readLabel() {
return label;
}
}
public Destination dest(String s) {
return new GDestination(s);
}
public Contents cont() {
return new Content();
}
}
class TestGoods {
public static void main(String[] args) {
Goods p = new Goods();
Contents c = p.cont();
Destination d = p.dest("Beijing");
}
}
同時,我們也發(fā)現(xiàn)了在外部類作用范圍之外得到內(nèi)部類對象的第一個方法,那就是利用其外部類的方法創(chuàng)建并返回。上例中的cont()和dest()方法就是這么做的。那么還有沒有別的方法呢?當(dāng)然有,其語法格式如下:
outerObject=new outerClass(ConstrUCtor Parameters);
outerClass.innerClass inNerobject=outerObject.new InnerClass(Constructor Parameters);
注重在創(chuàng)建非靜態(tài)內(nèi)部類對象時,一定要先創(chuàng)建起相應(yīng)的外部類對象。至于原因,也就引出了我們下一個話題——
新聞熱點
疑難解答