//内部类,最常使用的时机,也是其意义所在,就是可以同时实现上溯造型和信息隐藏 //因为正常的类,只允许被设置成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()); } }