/**
* Created by xfyou on 2016/11/3.
* Java内部类演示
* 内部类可完全进入不可见或不可用状态——对任何人都将如此。所以我们可以非常方便地隐藏实施细节
*/
public class Parcel3 {
/**
* 私有的内部类
*/
private class PContents extends Contents {
private int i = 11;
@Override
public int value() {
return i;
}
}
/**
* 受保护的内部类
*/
protected class PDestination implements Destination {
private String lable;
private PDestination(String whereTo) {
this.lable = whereTo;
}
@Override
public String readLabel() {
return lable;
}
}
public Destination dest(String s) {
return new PDestination(s);
}
public Contents cont() {
return new PContents();
}
}
abstract class Contents {
abstract public int value();
}
interface Destination {
String readLabel();
}
class Test {
public static void main(String[] args) {
Parcel3 p = new Parcel3();
Contents c = p.cont();
Destination d = p.dest("Tanzania");
// Illegal -- can't access private class:
//! Parcel3.PContents c = p.new PContents();
}
}