方法重写用于继承层次结构中的面向对象编程,当在子类中重新定义超类中定义的方法时,会发生这种情况。通常,子类方法执行与超类方法不同的操作或扩展超类的功能,但事实并非如此。每当在子类中重定义超类方法时,无论重定义方...
方法重写用于继承层次结构中的面向对象编程,当在子类中重新定义超类中定义的方法时,会发生这种情况。通常,子类方法执行与超类方法不同的操作或扩展超类的功能,但事实并非如此。每当在子类中重定义超类方法时,无论重定义方法的内容如何,都会发生方法重写。重定义的方法签名必须完全相同。在面向对象的计算机编程中,当在子类中重新定义超类中定义的方法时。例如,类a可能包含名为“doSomething”的方法,而此方法不接受输入参数。此外,类B和C可能是类a的子类。类B可能包含一个名为“doSomething”的方法,该方法不需要输入参数,而C类可能包含一个以数字作为输入参数的方法“doSomething”。在本例中,只有类B将演示方法重写,因为它的“doSomething”方法与它的超类class class a具有相同的方法签名。另一方面,类C中的“doSomething”方法演示了方法重载,因为它创建了一个全新的方法。C中的虚拟继承是方法重写的另一个例子。超类中的虚拟方法可能实现,也可能不实现,但它们的任何子类定义都是方法重写的实例。当方法在子类中被重写时,除非显式调用超类的方法,否则不会调用它。这种调用重写方法的特定方法通常被称为“隐藏”超类实现。尽管方法重写非常灵活,但并非所有方法都可以被重写,有时这种刚性可能更可取在Java和C中,可以在方法签名中应用特定的关键字,以防止方法在子类中被重写,和C使用“const”关键字。如果在继承树中某个特定函数应该始终保持不变,则防止方法重写是有益的,获取小块数据的简单方法不应被重写。从重写中受益最大的情况是,子类的目标是在没有创建全新方法的情况下向超类方法添加功能。对于某个特定类型的对象,需要完全重做某个方法的异常情况可能会发生也可以从这项技术中获益。每当方法被重写时,程序员对超类和子类方法都要有充分的注释。理想情况下,这些注释应该阐明方法的每个变体都做了什么,以及它们之间的区别和区别的原因
-
发表于 2020-08-06 23:49
- 阅读 ( 973 )
- 分类:电脑网络