挺希望有这样的语法

2015-05-08 13:16:59 +08:00
 c742435

class A{
function ei(argu:B):A{return this;}
}
class B extend A{
function bee():void{}
//重写方法时,可以返回原有返回值的子类。接受的参数可以是原有参数的父类。
override function ei(argu:A):B{return this;}
}

var a:A = new B;
if(a is B)
a.bee();//在这个代码块中,a必定是B的实例,因而可以调用B的方法

1977 次点击
所在节点    程序员
5 条回复
FrankFang128
2015-05-08 13:18:29 +08:00
希望没有 class 关键字
c742435
2015-05-08 13:19:48 +08:00
@FrankFang128 也许你说的是js?我不懂js哈 我只是个as程序员
saber000
2015-05-09 02:03:45 +08:00
个人觉得A的设计很丑陋,A只能处理被B继承的情况.
class A{
function get_type():str {
return 'A';
}
}

class B extend A{
function get_type():str {
return 'B';
}
}

var a:A = new B;
if (a.get_type() == 'B') {
var b:B = (B)a;
b.balabala();
}
这样设计呢?
c742435
2015-05-09 10:17:50 +08:00
@saber000 可能你没有明白我想说的意思。。。
我是想说 在继承时,子类复写函数、变量时允许使用兼容的函数原型,而不需要完全相同。
saber000
2015-05-09 16:29:47 +08:00
@c742435 我明白了,但是我不理解你这里说的兼容是什么意思,B继承了A就是兼容了A啊,难道说你想让一个函数返回多种类型的结果?如果只是这样,Python之类的都能做到.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/189456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX