国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&はじめる Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

Nov 30, 2019 pm 02:21 PM
java ポリモーフィズム オブジェクト指向

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

1. 概要

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

たとえば、人生において、走る動(dòng)き、子貓、子犬、象では走り方が異なります。もう一つの例は飛行の動(dòng)きで、昆蟲、鳥、飛行機(jī)も飛行方法が異なります。同じ行動(dòng)が、異なる物事を通じて異なる形で現(xiàn)れることがわかります。ポリモーフィズムはこの狀態(tài)を説明します。

ポリモーフィズム:

は、複數(shù)の異なる表現(xiàn)を持つ同じ動(dòng)作を指します。

前提條件 [重要なポイント]

1. 継承または実裝 [2 つのうちの 1 つを選択]

2. メソッドを書き換える [意味: 重要ではありません]書く、意味なし]

3. 親クラスの參照はサブクラス オブジェクトを指します [フォーマット リフレクション]

無料のオンライン學(xué)習(xí)ビデオの推奨: java ビデオ

2. ポリモーフィック マニフェスト

ポリモーフィック マニフェストの形式:

父類類型 變量名 = new 子類對(duì)象; 
變量名.方法名();
親クラス タイプ: サブクラス オブジェクトによって継承された、または実裝された親クラス タイプを指します。親インターフェイスのタイプ。

コードは次のとおりです:

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

ポリモーフィズムを使用してメソッドを呼び出すときは、まずそのメソッドが親クラスに存在するかどうかを確認(rèn)します。そうでない場(chǎng)合は、コンパイル エラーが発生します。そうである場(chǎng)合は、サブクラスのオーバーライドされたメソッドが実行されます。

コードは次のとおりです:

親クラスを定義します:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

サブクラスを定義します:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

#テスト クラスの定義:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

3. ポリモーフィズムの利點(diǎn)

実際の開発プロセス メソッドでは、親クラスの型をメソッドの仮パラメータとして使用して、サブクラスのオブジェクトをメソッドに渡してメソッドを呼び出します。これにより、ポリモーフィズムのスケーラビリティと利便性がよりよく反映されます。

コードは次のとおりです:

親クラスを定義します:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

サブクラスを定義します:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

#テスト クラスの定義:

public class Test {
    public static void main(String[] args) {
        // 多態(tài)形式,創(chuàng)建對(duì)象
        // Cat c = new Cat();
        // Dog d = new Dog();

        // 調(diào)用showCatEat showCatEat(c);
        // 調(diào)用showDogEat
        showDogEat(d);

        /*
        以上兩個(gè)方法, 均可以被showAnimalEat(Animal a)方法所替代而執(zhí)行效果一致
        */
        showAnimalEat(c);
        showAnimalEat(d);
    }

    public static void showCatEat(Cat c) {
        c.eat();
    }

    public static void showDogEat(Dog d) {
        d.eat();
    }

    public static void showAnimalEat(Animal a) {
        a.eat();
    }
}

eat メソッドが実行されると、ポリモーフィズムにより、サブクラスによって書き換えられたメソッドが実行されることが規(guī)定されているため、その効果は當(dāng)然ながら showCatEat および showDogEat メソッドと一致します。したがって、showAnimalEat は上記の 2 つのメソッドを完全に置き換えることができます。

置き換えだけでなく、スケーラビリティの観點(diǎn)からも、今後サブクラスがどれだけ登場(chǎng)しても、showXxxEatメソッドを記述する必要はなく、直接showAnimalEatを使用して完了することができます。

つまり、ポリモーフィズムの利點(diǎn)は、プログラムの記述が容易になり、拡張性が優(yōu)れていることです。

4. 參照型変換

ポリモーフィック変換は、上方変換と下方変換の 2 種類に分けられます。 ##アップキャスト

アップキャスト: ポリモーフィズム自體は、サブクラス型を親クラス型にアップコンバートするプロセスです。このプロセスがデフォルトです。 親クラス參照がサブクラス オブジェクトを指す場(chǎng)合、それは上向き変換です。

使用形式:

父類類型 變量名 = new 子類類型(); 
如:Animal a = new Cat();

ダウンキャスティング

親クラス型をサブクラス型にダウンコンバートする処理。この処理は必須です。 上方変換されたサブクラス オブジェクトの場(chǎng)合、親クラス參照をサブクラス參照に変換するには、下方変換である強(qiáng)制型変換の形式を使用できます。

使用形式:

子類類型 變量名 = (子類類型) 父類變量名; 
如 :Cat c =(Cat) a;

変換のデモンストレーション、コードは次のとおりです:

クラスの定義:

定義テストクラス:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

変換例外Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

轉(zhuǎn)型的過程中,一不小心就會(huì)遇到這樣的問題,請(qǐng)看如下代碼:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

這段代碼可以通過編譯,但是運(yùn)行時(shí),卻報(bào)出了ClassCastException,類型轉(zhuǎn)換異常!這是因?yàn)?,明明?chuàng)建了Cat類型對(duì)象,運(yùn)行時(shí),當(dāng)然不能轉(zhuǎn)換成Dog對(duì)象的。這兩個(gè)類型并沒有任何繼承關(guān)系,不符合類型轉(zhuǎn)換的定義。

為了避免ClassCastException的發(fā)生,Java提供了 關(guān)鍵字,給引用變量做類型的校驗(yàn)。

格式如下:

變量名 instanceof 數(shù)據(jù)類型
如果變量屬于該數(shù)據(jù)類型,返回true。
如果變量不屬于該數(shù)據(jù)類型,返回false。

所以,轉(zhuǎn)換前,我們最好先做一個(gè)判斷,代碼如下:

Java オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介

想學(xué)習(xí)更多相關(guān)教程請(qǐng)?jiān)L問:java入門學(xué)習(xí)

以上がJava オブジェクト指向 - ポリモーフィズムの詳細(xì)な紹介の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國(guó)語版

SublimeText3 中國(guó)語版

中國(guó)語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動(dòng)コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場(chǎng)合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場(chǎng)合はconn.rollback()を呼び出します。同時(shí)に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお?jiǎng)幛幛筏蓼埂?/p>

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時(shí)刻を取得します。 3。of()メソッドを使用して特定の日付と時(shí)刻を作成します。 4.プラス/マイナスメソッドを使用して、時(shí)間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

Garbage CollectionはJavaでどのように機(jī)能しますか? Garbage CollectionはJavaでどのように機(jī)能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動(dòng)的に管理するメカニズムであり、到達(dá)不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達(dá)不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達(dá)可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採(cǎi)用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時(shí)間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

HTTPミドルウェアロギングの例を例に進(jìn)めます HTTPミドルウェアロギングの例を例に進(jìn)めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時(shí)間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開始時(shí)間と終了時(shí)間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開始に適しています。拡張機(jī)能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

ユーザーデータにHTML「入力」タイプを使用します ユーザーデータにHTML「入力」タイプを使用します Aug 03, 2025 am 11:07 AM

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號(hào)、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるU(xiǎn)RL、色、範(fàn)囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

説明された延期聲明の例で進(jìn)みます 説明された延期聲明の例で進(jìn)みます Aug 02, 2025 am 06:26 AM

Deferは、クリーニングリソースなど、関數(shù)が戻る前に指定された操作を?qū)g行するために使用されます。パラメーターは、延期時(shí)にすぐに評(píng)価され、関數(shù)は最後のファーストアウト(LIFO)の順に実行されます。 1.複數(shù)の債務(wù)は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復(fù)に適したパニックが発生した場(chǎng)合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。

See all articles