2

ポリモヒズムとは何か、そしてそれが継承とどのように異なるのかを理解するのに問題があります。私はウェブを調査しましたが、ポリモーフィズムとは何かについて非常に技術的な定義を与える多くの回答を見つけましたが、私が本当によく理解しているものは何もありません. ポリモーフィズムである可能性があるが、そうではない可能性がある例を思いつきました。

私の例:

多くのレベルのメンバーシップを持つジムがあるとします。

  1. 基本会員
  2. シルバー会員
  3. ゴールド会員

各クラスは基本メンバーですが、より多くの機能があります

class basicMember(){
private double rate = 10;
privatedbl poolPrice = 5;

public void setRate (dbl in);
{
 rate = in;
}
public dbl getRate()
{
 return rate;
}
public dbl getPoolPrice()
{
 return poolPrice;
}
} 

class silverMember extends basicRate()
{
 private dbl poolPriceDis = .9;
setRate(15);

public dbl getPoolPriceDis(){
return getPoolPrice() * poolPriceDis;
}
 } 

class goldMember extends basicRate(){
private dbl poolPriceDis = .85;
setRate(20);

public dbl getPoolPriceDis(){
return getPoolPrice() * poolPriceDis;
}
}

これは、継承またはポリモーフィズム、あるいはその両方の例でしょうか? 説明してください.....

4

6 に答える 6

0

Object Oriented Design & Patternsの Cay Horstmann 氏の引用:

特定のオブジェクトに対して適切なメソッドを選択する機能は、 ポリモーフィズムと呼ばれます。(「ポリモーフィック」という用語は、文字通り「複数の形状を持つ」ことを意味します。)

継承を使用して、あるクラスがより一般的な概念を表し、別のクラスがより専門的な概念を表すクラス間の関係をモデル化します。

あなたの場合、継承を使用しているだけです。しかし、たとえばsetRate()、silverMember クラスのメソッドをオーバーライドし、メインに次のようなものがあるとします。

basicMember member = new silverMember();
member.setRate(20);

次に、setRate()basicMember 変数があっても、silverMember クラスの が呼び出されます。それがポリモーフィズムです。

--

この種のことを知らないのなら、このインタビューをしないようにアドバイスしなかったとしたら、私は自分自身に正直ではないでしょう. コメントの冒頭で引用した本を読んでみてください。

于 2013-06-17T22:17:57.403 に答える