关于静态方法的覆盖

静态有个虚拟表,编译的时候就已经确定了每个函数的地址。这里面放着所有静态方法的地址,这样程序调用的时候,直接在这里取地址,调用函数就可以了,速度比较快。而且不能被重载。

动态方法,好像编译的时候并不知道每个子类函数的地址,它是根据对象的所属的类动态调用函数,灵活方便,并且提高了速度譬如
a=class
    f1:static;
    f2:dynatic
b=class(a)
    f1;
    f2:override;

a1:a
a1:=a.create;
a1.f1     调用a.f1
a1.f2     调用a.f2;

a1:=b.create
a1.f1;   调用a.f1
a2.f2;   调用b.f2

因为a1被宣称为a类的对象,所以对于静态函数他只能调用f1,对于动态函数,
可以动态根据他所属的类来执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值