NVIDIA为什么要革自己的命?
|
上述 test 类中的 start() 方法接收一个 Animal 的引用,自然也可以接收从Animal 的导出类。调用eat() 方法的时候,自然而然的使用到 Monkey 中定义的eat()方法,而不需要做任何的类型转换。因为从 Monkey 向上转型到 Animal 只能减少接口,而不会比Animal 的接口更少。 打个不是特别恰当的比方:你父亲的财产会继承给你,而你的财产还是你的,总的来说,你的财产不会比你父亲的少。 忘记对象类型 在 test.start()方法中,定义传入的是 Animal 的引用,但是却传入Monkey,这看起来似乎忘记了Monkey 的对象类型,那么为什么不直接把test类中的方法定义为void start(Monkey monkey),这样看上去难道不会更直观吗。 直观也许是它的优点,但是就会带来其他问题:Animal不止只有一个Monkey的导出类,这个时候来了个pig ,那么是不是就要再定义个方法为void start(Monkey monkey),重载用得挺溜嘛小伙子,但是未免太麻烦了。懒惰才是开发人员的天性。 因此这样就有了多态的产生 2.显露优势 「方法调用」中分为 静态绑定和动态绑定。何为绑定:将一个方法调用同一个方法主体关联起来被称作绑定。
「引出思考:」 square.cal(), border的结果居然是 0,而不是2。难道我现在连多态都不会了吗?电脑手机前的你,不知道是否得出了正确答案了呢!不管有没有,接下来就跟小菜一起来复习一下多态吧! 有些小伙伴疑惑的点可能不止square.cal(), border的结果是 0,也有为什么不是 square.square(), border = 4 先输出的疑惑。那么我们就带着疑惑,整起! 多态 「在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。」 多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序。多态的作用就是消除类型之间的耦合关系。 1. 向上转型 根据里氏代换原则:任何基类可以出现的地方,子类一定可以出现。
对象既可以作为它自己本身的类型使用,也可以作为它的基类型使用。而这种把对某个对象的引用视为对其基类型的引用的做法被称作为 - 向上转型。因为父类在子类的上方,子类要引用父类,因此称为 向上转型。
为什么数据科学家应该获得CDMP认证
还不明白为什么数据策略很重要?让我们从一个数据科学家的角度来看一看,他们的目标是增加知识和赚钱的潜力。 (编辑:怀化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

