【40】类中类
//内部类,最常使用的时机,也是其意义所在,就是可以同时实现上溯造型和信息隐藏
//因为正常的类,只允许被设置成public和protected权限,不能做到完全的信息隐藏
//而内部类,是可以设置为private的,因为此时可将其看作其包含类的成员,如此即可隐藏信息
//与此同时,在其包含内中,编写一个方法,方法内部是创建内部类的实例,而通过return语句
//将新创建的对象上溯造型为内部类的基类或接口,如此一来,就实现了上溯造型和信息隐藏的双重功效
//对外公开的抽象类
abstract class Contents{
public abstract int value();
}
//对外公开 的接口
interface Destinition{
String readLabel();
}
class Parcel{
//以内部类的方式继承公开的抽象类
private class pContents extends Contents{
private int i = 11;
public int value(){return i;}//遵守继承抽象类的规则
}
//以内部类的方式实现对外公开的接口
protected class pDestinition implements Destinition{
private String label;
private pDestinition(String whereto){
label = whereto;
}
public String readLabel(){//遵守实现接口的规则
return label;
}
}
//编写两个方法,实现内部类的实例化,并通过return实现上溯造型
public Destinition dest(String string){
return new pDestinition(string);
}
public Contents cont(){
return new pContents();
}
}
public class Test {
public static void main(String[] args) {
Parcel parcel = new Parcel();
Contents contents = parcel.cont();
Destinition destinition = parcel.dest("Wow");
System.out.println(contents.value());
System.out.println(destinition.readLabel());
}
}