gpt4 book ai didi

c# 将子类声明为类型父类(super class)

转载 作者:太空狗 更新时间:2023-10-29 18:23:03 24 4
gpt4 key购买 nike

对于这个继承问题,我似乎找不到满意的答案。为什么有时要声明这样的子类型:

Shape myCircle = new Circle();

其他时候呢?

Circle myShape = new Circle();

其中 Circle 是 Shape子类/子类 .....

我读过的面向对象书籍似乎没有一致性,也没有我能理解的解释。人们向我展示了为圆形、正方形等实例化 Shapes 类的示例...但我不明白您何时使用第一个声明和第二个声明。

最佳答案

通常需要处理具体类的对象 polymorphically避免在可以避免的特定类型上创建依赖项。例如,如果您正在创建一个 Circle 并打算绘制它,而 Draw()Shape 的一个方法,那么它最好将 myCircle 声明为形状,以防您稍后决定将其替换为正方形。

另一方面,如果您打算对 Circle 做一些特定的事情,比如设置它的半径,那么您需要将 myCircle 声明为 Circle,因为 SetRadius()Shape 上可能不可用。

关于c# 将子类声明为类型父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com