inner class的向上转型
当把一个inner class对象向上转型成为interface时,我们得到的只是一个reference。
interface Destination{
String readLabel();
}
interface Contents{
int value();
}
class Parcel3{
private class PContents
implements Contents{
private int i = 11;
public int value() {
return i; }
}
protected class PDestination
implements Destination{
private String label;
PDestination(String whereTo){
label = whereTo;
}
public String readLabel() {
return label; }
}
public Destination to(String s){
return new PDestination(s);
}
public Contents cont(){
return new PContents();
}
}
public class ExplicitStatic{
public static void main(String[] args){
Parcel3 p =
new Parcel3();
//把inner class对象向上转型
Contents c = p.cont();
Destination d = p.to("Borneo");
}
}
虽然我们不能在ExplicitStatic class无法调用Pcontents class,但我们把一个Pcontents class对象向上转型为Contents,就可对之进行调用。
本文地址:http://com.8s8s.com/it/it15840.htm