Tag: 面向对象分析

方法是否重载了一种多态?

我正在研究静态和动态多态,并得到这些链接: http://guruzon.com/1/oop-concepts/polymorphism/what-is-polymorphism-example-tutorial-uml-diagram-notation http://www.coderanch.com/t/379004/java/java/static-polymorphism-dynamic-polymorphism http://javarevisited.blogspot.in/2011/08/what-is-polymorphism-in-java-example.html 在所有这些链接中,有人说过载是多态的一个例子,然后我遇到了另外两个地方,据说重载与多态无关,链接是: 方法重载是多态吗? Head First Java第2版第7章(inheritance和多态)上一主题:重载方法 。 现在我无法弄清楚它是否是一种多态性,如果它不是OOP中有什么称为静态多态的话?

这种“instanceof”运算符的使用是否被认为是错误的设计?

在我的一个项目中,我有两个“数据传输对象”RecordType1和RecordType2,它们inheritance自RecordType的抽象类。 我希望两个RecordType对象在“process”方法中由同一个RecordProcessor类处理。 我的第一个想法是创建一个通用的流程方法,该方法委托给两个特定的流程方法,如下所示: public RecordType process(RecordType record){ if (record instanceof RecordType1) return process((RecordType1) record); else if (record instanceof RecordType2) return process((RecordType2) record); throw new IllegalArgumentException(record); } public RecordType1 process(RecordType1 record){ // Specific processing for Record Type 1 } public RecordType2 process(RecordType2 record){ // Specific processing for Record Type 2 } 我读过Scott Meyers在Effective C ++中写了以下内容: “任何时候你发现你自己编写的forms代码’如果对象是T1类型,那么做一些事情,但如果它是T2类型,那么做点其他事情,’打自己吧。” […]