看下这个程序吧。
大致轮廓是这样的:
public class HappyPush extends MIDlet implements AppExiter
{
protected void startApp()
{
Display.getDisplay(this).setCurrent(new HappyScreen(this));//这个this不是代表当前的类吗?这里的类不是应该是 MIDlet的子类happypush吗?可在下面的构造函数里用得是一个AppExiter接口啊。
}
...
}
class HappyPushScreen extends Canvas implements CommandListener
{
...
public HappyPushScreen(AppExiter exiter){...}//用接口作为类声明一个对象吗?
..
}
interface AppExiter
{ public static final Command EXIT=new..
public void exitApp();
}
想弄明白这里this和AppExiter 的关系,请高手指教啊
问题点数:20、回复次数:9Top
1 楼lindd(塔洲之行)回复于 2005-06-02 22:41:45 得分 5
我不是高手地说。
class “HappyPushScreen“
setCurrent(new “HappyScreen“(this))
好像括号里他们不一样吧。楼主在看看。
Top
2 楼lindd(塔洲之行)回复于 2005-06-02 22:42:50 得分 5
是引号里不一样。
Top
3 楼yaray(雅睿,生活在别处)回复于 2005-06-02 23:47:56 得分 0
这就是面向接口编程,而不是面向实现编程。Top
4 楼ICeeYeS(酷顽)回复于 2005-06-03 23:50:24 得分 0
对不起,写错了,
Display.getDisplay(this).setCurrent(new HappyPushScreen(this));//改成这样才对
再烦请大家看看Top
5 楼ICeeYeS(酷顽)回复于 2005-06-04 22:23:25 得分 0
没人吗没人吗?Top
6 楼k7sem(【Conch fish】I love qing qing.)回复于 2005-06-04 23:46:04 得分 0
子类的对象,可以看成是父类的对象。
在JAVA里叫做upcasting 向上转型。
楼下继续讨论,不知道我说的对不对Top
7 楼lindd(塔洲之行)回复于 2005-06-05 09:12:32 得分 0
yaray(雅睿,生活在别处)
应该说的是对的。我朋友也这么讲。不过我不太懂。Top
8 楼ICeeYeS(酷顽)回复于 2005-06-05 23:21:08 得分 0
上转型是说用将子类赋给一个父类,该父类不能操作子类新增的变量和方法。
这题和上转型没什么关系吧?
新人,不对请指教。
yaray说的面向接口我就不是很懂了。能再解释下吗?Top
9 楼c9714052(ali)回复于 2005-06-09 08:48:14 得分 10
接口也是一个类,只是一个没有任何实现的类,在C++里叫做纯虚函数。子类继承接口后,就具有了接口的特性,就可以子转父。
比如dog继承了run接口,在要用到dog跑的现实时,传参时可以写成(dog g){g.run()},
也可以写成(run r){r.run}。
这里只为了调用run()方法。没必要用第一种方法把dog传过去。第二种就是面向接口编程Top




