ホームページ  >  記事  >  Java  >  Javaポリモーフィズムを理解する方法

Javaポリモーフィズムを理解する方法

青灯夜游
青灯夜游オリジナル
2021-04-13 17:55:396487ブラウズ

Java では、ポリモーフィズムは、同じ動作が複数の異なる表現または形式を持つことができる機能です。ポリモーフィズムは、異なるインスタンスを使用して異なる操作を実行する同じインターフェイスです。ポリモーフィズムの利点: 1. 型間の結合関係の排除、2. 置換、3. 拡張性、4. インターフェース、5. 柔軟性、6. 簡素化。

Javaポリモーフィズムを理解する方法

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

ポリモーフィズムの概要

1.

ポリモーフィズムは、カプセル化と継承に続くオブジェクト指向の 3 番目の主要な機能です。

2. ポリモーフィズム

実際的な意味理解:

  • 現実のものは、学生、学生など、複数の形式を取ることがよくあります。が人々の一種である場合、特定のクラスメート Zhang San は

    学生 であると同時に 人物 です。つまり、2 つの形式 があります。オブジェクトの言語は、1 つのものの複数の形式を記述することもできます。 Student クラスが Person クラスを継承する場合、Student オブジェクトは Student と Person の両方になります。

  • 3. ポリモーフィズムは、
  • 親クラス参照変数はサブクラス オブジェクトを指すことができます

    に反映されます。

  • 4. 前提条件: 子と親のクラス関係が存在する必要があります。

注: 多態性の親クラス参照変数を使用してメソッドを呼び出すと、サブクラスの書き換えられたメソッドが呼び出されます。

#5. ポリモーフィズムの定義と使用形式

定義形式:親クラス型変数名=新しいサブクラス型();

6. 理解する:

ポリモーフィズムとは、同じ動作が複数の異なる表現や形式を持つ能力です。

ポリモーフィズムは同じインターフェイスであり、異なるインスタンスを使用して異なる操作を実行します。

7. ポリモーフィズムの利点

型間の結合関係を排除

置換可能性
  • 拡張性
  • インターフェイス
  • ##柔軟性

  • ## 簡素化

  • #8. ポリモーフィズムが存在するための 3 つの必要条件

  • ##継承
  • ## 書き換え

親クラスの参照は、子クラスのオブジェクトを指します:
    Parent p = new Child();
  • #ポリモーフィズムにおけるメンバーの特性

  • 1. 多態性メンバー変数: コンパイルおよび実行時に左側を確認します
  • Fu f=new Zi();
    System.out.println(f.num);//f是Fu中的值,只能取到父中的值

    2. 多態性メンバー メソッド: コンパイル時は左側、実行時は右側を確認します<pre class="brush:js;toolbar:false">Fu f1=new Zi(); System.out.println(f1.show());//f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。</pre>

    instanceofkeyword

関数: オブジェクトが特定のデータ型に属するかどうかを判断するために使用されます。 注: 戻り値の型はブール型です。

ユースケース:

        Fu f1=new Zi();
        Fu f2=new Son();
        if(f1 instanceof Zi){
            System.out.println("f1是Zi的类型");
        }
        else{
            System.out.println("f1是Son的类型");
        }

ポリモーフィック変換

ポリモーフィズム 変換は次のとおりです。上向き変換と下向き変換の 2 種類に分けられる

上向き変換: ポリモーフィズム自体が上向き変換のプロセスである

使用形式: 親クラス型変数名 = 新しい子クラス型();

適用可能なシナリオ: サブクラス型に直面する必要がない場合、対応する操作は、スケーラビリティを向上させるか、親クラスの関数を使用することによって完了できます。

下方変換: 上方変換されたサブクラス オブジェクトは、強制型変換の形式を使用して、親クラスの参照型をサブクラスの参照型に変換できます。形式: サブクラス型変数名 = (サブクラス型) 親クラス型変数;
  • 適用シナリオ: サブクラス独自の機能を使用したい場合。
  • ポリモーフィックのケース:

例 1: (

ポリモーフィズムを理解するには、このケースに注目してください
  • )
  • package day0524;
    
    public class demo04 {
        public static void main(String[] args) {
            People p=new Stu();
            p.eat();
            //调用特有的方法
            Stu s=(Stu)p;
            s.study();
            //((Stu) p).study();
        }
    }
    class People{
        public void eat(){
            System.out.println("吃饭");
        }
    }
    class Stu extends People{
        @Override
        public void eat(){
            System.out.println("吃水煮肉片");
        }
        public void study(){
            System.out.println("好好学习");
        }
    }
    class Teachers extends People{
        @Override
        public void eat(){
            System.out.println("吃樱桃");
        }
        public void teach(){
            System.out.println("认真授课");
        }
    }
例 2:

プロジェクトを実行した結果はどうなりますか?

package day0524;
public class demo1 {
    public static void main(String[] args) {
        A a=new A();
        a.show();
        B b=new B();
        b.show();
    }
}
class A{
    public void show(){
        show2();
    }
    public void show2(){
        System.out.println("A");
    }
}
class B extends A{
    public void show2(){
        System.out.println("B");
    }
}
class C extends B{
    public void show(){
        super.show();
    }
    public void show2(){
        System.out.println("C");
    }
}

回答: A B

関連ビデオ チュートリアルの推奨事項: Java ビデオ チュートリアル

以上がJavaポリモーフィズムを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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