每天進步一點點……成就不一樣的自己!
阿新 • • 發佈:2019-01-27
當將內部類向上轉型為其基類,尤其是轉型為一個介面
的時候,內部類就有了用武之地:能夠很方便地隱藏實現細節。
//: innerclasses/Destination.java
//客戶端程式設計師可用的介面
public interface Destination {
String readLabel();
} ///:~
//: innerclasses/Contents.java
//客戶端程式設計師可用的介面
public interface Contents {
int value();
} ///:~
//: innerclasses/TestParcel.java
class Parcel4 {
private class PContents implements Contents{
private int i = 11;
@Override
public int value() { return i; }
}
protected class PDestination implements Destination {
private String label;
private PDestination(String whereTo) {
label = whereTo;
}
@Override
public String readLabel () { return label; }
}
public Destination destination(String s) {
return new PDestination(s);
}
public Contents contents() {
return new PContents();
}
}
public class TestParcel {
public static void main(String[] args) {
Parcel4 p = new Parcel4();
Contents c = p.contents();
Destination d = p.destination("Tasmania" );
// 不能訪問私有類
//! Parcel4.PContents pc = p.new PContents();
}
} ///:~
說明:本文是對第四版Java程式設計思想第10.4節內部類與向上轉型的歸納整理。