1. 程式人生 > >每天進步一點點……成就不一樣的自己!

每天進步一點點……成就不一樣的自己!

當將內部類向上轉型為其基類,尤其是轉型為一個介面的時候,內部類就有了用武之地:能夠很方便地隱藏實現細節。

這裡寫圖片描述

//: 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節內部類與向上轉型的歸納整理。