ホームページ >Java >&#&チュートリアル >Java でのポリモーフィック使用の分析例

Java でのポリモーフィック使用の分析例

高洛峰
高洛峰オリジナル
2017-01-19 13:57:011385ブラウズ

この記事の例では、Java でのポリモーフィズムの使用法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:

ポリモーフィズムはオブジェクト指向プログラミング言語の中核機能です。カプセル化と継承は比較的単純なので、ここではポリモーフィズムについて少しだけ説明します。 。 。

1. ポリモーフィズムとは何ですか?

ポリモーフィズムとは、オブジェクトが複数の特性を持つことができ、さまざまなプロパティやメソッドに応答するために特定の状況下でさまざまな状態を示すことができることを意味します。 Java では、ポリモーフィック実装とは、同じ実装インターフェイスを使用して異なるオブジェクト インスタンスを実装することを指します。

たとえば、Parent クラスを定義し、文字列を返す getName() メソッドを定義し、仮パラメータが Parent 型であるメンバー メソッド doSomething(Parent obj) を定義し、このメソッド内で obj.getName() を呼び出します。 。次に、2 つのクラス A と B を定義します。どちらも親クラスから継承し、サブクラスの getName() メソッドをオーバーライドします。最後に、main メソッドで Parent クラスのオブジェクト objP を作成し、objP.doSomething() メソッドを呼び出して、クラス A とクラス B の参照を渡します。出力を観察します。

class Parent 
{ 
  private String name = "parent"; 
  public String getName() 
  { 
    return this.name; 
  } 
  public void doSomething(Parent obj) 
  { 
    //输出类名 
    System.out.println(obj.getName()); 
  } 
  public static void main(String[] args) 
  { 
    Parent objP = new Parent(); 
    objP.doSomething(new A());
 // 传递A的引用,则调用的是A类的getName方法
    objP.doSomething(new B());
 // 传递B的引用,则调用的是B类的getName方法
  } 
} 
class A extends Parent 
{ 
  private String name = "class A"; 
  //@重写getName()方法 
  public String getName() 
  { 
    return this.name; 
  } 
} 
class B extends Parent 
{ 
  private String name = "class B"; 
  //@重写getName()方法 
  public String getName() 
  { 
    return this.name; 
  } 
}

親クラスの doSomething メソッドが、親クラス自体の getName メソッドではなく、渡したオブジェクトの getName メソッドを多態的に呼び出していることがわかります。

2. Java のインターフェース

Java のインターフェースは、一連のメソッドの宣言です。インターフェイスにはメソッドの特性のみがあり、メソッドの実装はありません。これらのメソッドは、特定のクラスを通じて他の場所から実装できます。 Java では、インターフェイスを宣言するためにキーワード インターフェイスが使用されます。

インターフェースを使用してポリモーフィズムを実装する例:

interface Name
{
  //只声明,不实现
  public String getName();
}
class A implements Name
{
  private String name = "class A";
  //实现getName方法
  public String getName()
  {
    return name;
  }
}
class B implements Name
{
  private String name = "class B";
  //实现getName方法
  public String getName()
  {
    return name;
  }
  public static void main(String[] args)
  {
    Name obj = new A();
    System.out.println(obj.getName());
  }
}

ご覧のとおり、クラス A の名前、class A が出力されます。

追記: クラスがインターフェース内のすべてのメソッドを実装していない場合、そのクラスは抽象クラスとして宣言する必要があります。抽象クラスではオブジェクトのインスタンス化は許可されません。

この記事が皆さんの Java プログラミング設計に役立つことを願っています。

Java でのポリモーフィック使用例の分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。