原谅我实在是不知道该怎么描述这个问题了,尝试搜索不知道合适的关键词。
在一个类(User)里面的某个属性可能是基类( Base ),也可能是派生类( NewBase )
那么写 User 的这个属性(daz)的时候,只能写成 Base (否则无法访问到属性 bar )
但是在调用这个属性(daz)的时候,是按照 Base 的定义写的
相关方法的重载也选择的是 Base 的,而不是其派生类的的 Foo,尽管写了 overloads
请问这个该怎么办?
Class Base
public bar as integer
Function Overridable Foo() as Integer
return 0
End Function
End Class
Class NewBase : Inherit Base
Function Overloads Foo()
return 1
End Function
EndClass
Class User
Public daz as Base
Sub Xxx()
if daz.bar > 0 then
daz.Foo()
end if
End Sub
End Class
1
phpfpm OP 自问自答:
user.daz 不指定类型就完事儿了。。 但是代码还是很丑,只能算是能跑通。。 |