类成员的其他议题-机器人学导论第三版课后习题答案
10.2类成员的其他议题
下面该讨论一些比较高级的成员议题了。本节主要研究:
-
隐藏基类方法
-
调用重写或隐藏的基类方法
-
嵌套的类型定义
10.2.1 隐藏基类方法
当从基类继承一个(非抽象的)成员时,也就继承了其实现代码。如果继承的成员是虚拟的,就可以用override
关键字重写这段实现代码。无论继承的成员是否为虚拟,都可以隐藏这些实现代码。这是很有用的,当继承的公共成员不像预期的那样工作时,就可以隐藏它。使用下面的代码就可以隐藏:
public class MyBaseClass {
public void DoSomething() {
// Base implementation.
}
}
public class MyDerivedClass : MyBaseClass {
public void DoSomething() {
// Derived class implementation, hides base implementation.
}
}
尽管这段代码正常运行,但它会产生一个警告,说明隐藏了一个基类成员。如果是无意间隐藏了一个需要使用的成员,此时就可以改正错误。如果确实要隐藏该成员,就可以使用new
关键字显式地表明意图:
public class MyDerivedClass : MyBaseClass {
public new void DoSomething() {
// Derived class implementation, explicitly hides base implementation.
}
}
想了解更多关于重写和隐藏基类方法的详细信息,可以参考这篇文章:重写隐藏基类new override的方法。
对于那些对Python感兴趣的人来说,Python中同样存在类似的概念和实现方法。可以参考这篇关于如何在Python中替换基类方法的文章:Python基类方法替换。如果你更想了解如何在Python中获取父类的类成员方法,请查看这篇文章:Python实现子类获取父类的类成员方法。
不仅如此,C#中的子类对基类方法的继承、重写与隐藏还有更多的讨论,详见这篇文章:C#子类对基类方法的继承重写与隐藏详解。这些资源可以帮助你更深入地理解和掌握这些高级编程技巧。
学习编程时,发现并利用这些技巧就像在黑暗中找到一盏明灯,使你在复杂的代码海洋中游刃有余。还等什么,快点击这些链接去探索吧!
用户评论