java抽象类怎么定义对象,能帮我解析下面这段嘛?

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:13:00
abstract class Contents{abstract public int value();}
interface Destination{String readLabel();}
public class Parcel3{
private class PContents extends Contents{
private int i;
PContents(int cn){i=cn;}
public int value(){return i;}
}
protected class PDestination implements Destination{
private String label;
private PDestination(String whereTo){label=whereTo;}
public String readLabel(){return label;}
}
public Destination dest(String s){return new PDestination(s);}//
public Contents cont(int cn){return new PContents(cn);}//
}
class pl3{
public static void main(String args[]){
Parcel3 p=new Parcel3();
Contents c=p.cont(100); //
Destination d=p.dest("Tanzania"); // 请问这里是什么意思 啊!!!
System.out.println(c.value());
System.out.println(d.readLabel());
}
}

麻烦帮忙解析下这个程序.特别是带//后面的 !!!!!!!

Parcel3这个类里又两个内部类PContents和PDestination,PContents继承于Contents抽象类,该抽象类有一个int value。PDestination实现了Destination接口,该接口定义了一个String readLabel()方法。
pl3类是创建了一个Parcel3对象,
Contents c=p.cont(100); 该句调用Parcel3的cont方法创建了一个Parcel3内部类Contents的对象并返回。
Destination d=p.dest("Tanzania"); 该句调用Parcel3的dest方法创建了一个PContents对象并返回。
这个程序最关键的就是Parcel3类里又两个内部类,只要看清这两个内部类就可以了。。

这个结构。。。。明显这程序是考你interface absract class inner class滴
Parcel3 p=new Parcel3();
Contents c=p.cont(100);
Destination d=p.dest("Tanzania"); // p.dest("Tanzania"):Parcel3的一个对象p实例化一个PDestination类,赋值变量lable为"Tanzania"并把该实例上溯为Destination类型返回,请看此方法:
Destination dest(String s){return new PDestination(s);
用Destination类型的一个引用d指向返回的Destination类型实例。

java中允许一个父类对象引用子类实例,叫上溯造型。你可以初步理解成一种强制转换。详细的你可以在网上查看资料

抽象类不能被实例化。
但是可以引用子类中的对象。

lsz肯定