javaの。ポリモーフィック

アウトライン

多态是继封装、继承之后,面向对象的第三大特性
生活中,比如跑的动作,猫、狗和大象,跑起来是不一样的。再比如飞行的动作,昆虫、鸟和飞机,飞起来也是不一样的。可见,同一类行为,通过不同的事物,可以体现出来不同的形态。多态描述的就是这样的状态。

定義

多态:是指同一行为,具有多个不同表现形式
    1、继承或实现【二选一】
    2、方法重写【意义体现:不重写,无意义】
    3、弗雷引用指向子类对象【格式体现】

ポリモーフィックは反映します

ポリモーフィックは、フォーマットを具現化:

父类类型 变量名 = new 子类对象;
变量名.方法名();
//父类类型:指子类对象继承的父类类型,或者实现的父接口类型

コードは以下の通りであります:

Fu f = new Zi();
f.method();

多型メソッドは、メソッドの親クラスが存在するか否かを前記第一確認し、そうでない場合、コンパイルエラーを呼び出すと;、もし方法サブクラスオーバーライド行った後
コード:

ポリモーフィックなメリット

实际开发中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现多态的扩展性与便利。代码如下:

サポート多型、メソッドの動物showAnimalEat型の特性は、犬及び猫が親クラスタイプ、親受信サブクラスオブジェクトのタイプであり、オブジェクトは、もちろん、猫と犬オブジェクトは、メソッドに渡されることができます。
多型を所定の方法で実行し、食べるとき、サブクラスは、この方法は、自然showCatEatの効果と一致し、その後、行われ、showDogEatの方法は、あなたが上記の2つのshowAnimalEat方法を置き換えることができますオーバーライドされ
た後、スケーラビリティに、ちょうど置き換えに関係なくサブカテゴリーのない量が表示されない、我々は直接showAnimalEatを行うことができ、showXxxEatメソッドを記述する必要はありません
多状態の利点は、よりシンプルでプログラムに反映させることができるように、との良好な拡張

リファレンス型変換

多态的转型分为向上转型和向下转型两种

アップキャスト

多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的
当父类引用指向一个子类对象时,便是向上转型
使用格式:
父类类型 变量名 = new 子类类型();
Animal a = new Cat();

愁い

父类类型向子类类型向下转型的过程,这个过程是强制的
一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型
使用格式:
子类类型 变量名 = (子类类型)父类变量名;
Cat c = (Cat) a;

なぜ転換?

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥有而父类没有的方法。所以想要调用子类特有的方法,必须做向下转型。

異常の変換

转型的过程中,一不小心就会遇到这样的问题,请看如下代码:

このコードはコンパイルされますが、ランタイムが、異常なキャストClassCastExceptionが、報告することができます!明らかに作成されたためである
猫型のオブジェクトは、実行はもちろん、犬のオブジェクトに変換することができません。これらの2つのタイプは、変換の種類の定義を満たさない、任意の継承を持っていません。
ClassCastExceptionがないようにするには、Javaが参照変数の種類を行うには、次の形式を確認し、instanceofはキーワード用意されています。

变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false。

次のようにそのため、変換前に、我々は、より良い決意を行います。

おすすめ

転載: www.cnblogs.com/youngleesin/p/11925301.html