1

私は最近インタビューに参加しましたが、そのインタビュー中に、プログラミングの概念が思ったほど具体的ではないことに気づきました。

以前の仕事でポリモーフィズムを使用した時期について説明してください。

少し考えた後、私はすべての新しいレコードが拡張されたレコードクラスがあると言いました。したがって、AddRecord、RemoveRecord、またはその他のタイプのレコードがある場合、それらはRecordを拡張します。レコードインターフェイスは次のようになりました。

public abstract Record{
  public writeLine(String line);
  public getColumn(int column);
  public setHeader(String header);
  ...
}

public AddRecord extends Record{
  public writeLine(String line){
      // do something
  }

  // etc...
}

public MakeRecord{
   Record r;
   public setRecord(Object s){
      if(s instanceof Record){
          r = s;
      }
   } 

   public void printNewRecord(){
      while(thingsToWrite){
          r.writeLine(something);
      }
   }
}

私はそれをショートハンドしただけなので、それを選んではいけません。

レコードの種類に関係なく、レコードの種類がわからなくても書き込みが可能であるため、これはポリモーフィズムを使用していることを伝えました。これは、ゼロで埋められるかスペースで埋められるなど、正しく埋める必要のあるファイルを書き込んでいるため、貴重でした。

これがポリモーフィズムでない場合は、例をポリモーフィズムを使用するものに変更する方法を教えてください。

4

4 に答える 4

2

長い回答の短い: はい webster によると、多型とは次のとおりです:a (1) : 性別のバリエーションとは無関係に、いくつかの形態の種の存在 (2) : いくつかの対立遺伝子形態の遺伝子の存在 (3) : 分子の存在(酵素として) 単一の種のいくつかの形で b : 異なる構造を持つ 2 つ以上の形で結晶化する特性

定義aに焦点を当てています。これは、Java 用語で、1 つの「トップ」クラスを使用して 2 つの「ボトム」クラスを参照することを表しています。私の知る限り、それは上記の例に示されています。

于 2012-05-21T22:35:12.293 に答える
0

この例は、ポリモーフィズムを説明するのに適していません。

Addrecord は Record クラスの適切な拡張ではありません。Addrecord はクラスではなくメソッドである必要があります。

したがって、基本的に Addrecord メソッドを持つ Record クラスが必要であり、このメソッドは - ColumnnameRecordのような特別なレコードでオーバーライドできます。

Record クラスから派生した specialRecord クラスがあり、Record クラスに派生クラスによってオーバーライドされるメソッドがある場合、ポリモーフィズムの良い例があります。

現在の例は技術的には正しいですが、概念的には正しくありません。

于 2012-05-22T14:55:10.650 に答える