在不需要时使用超级有什么危害吗?

Pac*_*ace 9 java coding-style

此消息严格适用于Java.如果方法在超类中,则可以通过两种方式调用该方法:

foo();
super.foo();
Run Code Online (Sandbox Code Playgroud)

总是做后者有什么害处吗?作为一种编码风格,我更喜欢后者,因为一眼就能看出方法调用的来源.在任何情况下,"超级"将不存在或不做我认为会做的事情吗?

Jua*_*tti 8

我认为你可能遇到的唯一伤害就是当你想要使用多态时,如果你调用foo()并且某些子类覆盖了foo,那么效果会比你调用时有所不同super.foo(),基本上,它取决于你如何设计代码和目的是什么

希望这说清楚.


leo*_*loy 6

作为一般规则,您应该只super.foo()在类foo()方法中使用.总的来说,不这样做违背了OOP的思想.

因为一眼就可以看出方法调用的来源

在OOP中,您不应该知道方法调用"来自"的位置.如果你的程序(或你的思维)是取决于,你是在潜在的问题(并很可能会在实际的麻烦时,有人决定要覆盖的方法).该方法myobject.foo()必须从外部作为MyObject来的类的方法中可以看出; 如果该方法实际上在其父级的具体类中实现,则无关紧要.