Java におけるオーバーロードと書き換えの違い
Javaを学習中の学生の皆様、ご注意ください! ! !
学習プロセス中に問題が発生した場合、または学習リソースを入手したい場合は、Java 学習交換グループ (159610322) に参加してください。一緒に Java を学びましょう!
まず、オーバーロードについて話しましょう:
(1) メソッドのオーバーロードは、クラスがさまざまな種類のデータを統一された方法で処理するための手段です。パラメータの数や種類が異なる、同じ名前の関数が複数同時に存在します。
オーバーロードは、クラス内のポリモーフィズムの現れです。
(2) Java メソッドのオーバーロードとは、名前は同じですが、パラメーターと定義が異なる複数のメソッドを作成できることを意味します。
メソッドを呼び出すとき、メソッドに渡されるパラメーターの異なる数と型に基づいて、どのメソッドを使用するかを決定します。これがポリモーフィズムです。
(3) オーバーロードする場合、メソッド名は同じである必要がありますが、パラメータの型と数は異なり、戻り値の型は同じであっても異なっていても構いません。戻り値の型は、オーバーロードされた関数を区別するための基準として使用できません。
以下はオーバーロードの例です:
package c04.answer;// これはパッケージ名です
// これはこのプログラムの最初のプログラミング メソッドです。 main メソッドで、最初に Dog クラスのインスタンスを作成します。 this キーワードは、クラスのコンストラクターでさまざまな bark メソッドを呼び出すために使用されます。
さまざまなオーバーロードされたメソッド bark は、パラメーターの型に従って区別されます。
//注: コンストラクターを除き、コンパイラーは他の場所でコンストラクターを呼び出すことを禁止します。 E パッケージ C04.ANSWER;
Dog () {
This.bark ();
void Bark () // Bark () Method {
System.out.println ("吠えない!" );
This.bark("雌", 3.4);
}
void bark(String m,double l)//注: オーバーロードされたメソッドの戻り値は同じです、
{ O System.out.println ("A Barking Dog!");
This.bark (5, "China"); 「パラメータの種類」と「クラス名」によってのみ区別できます
System.out. Dog Dog = new Dog();
それでは、Overridingについてお話します
(1) 親クラスと子クラス間のポリモーフィズム、親クラスの関数を再定義します。サブクラスで定義されたメソッドがその親クラスと同じ名前とパラメータを持つ場合、そのメソッドはオーバーライドされていると言います。 Java では、サブクラスは、同じメソッドを書き直すことなく、親クラスからメソッドを継承できます。
しかし、場合によっては、サブクラスが親クラスのメソッドを変更せずに継承したくないが、メソッドの書き換えが必要となる特定の変更を加えたい場合があります。
メソッドの書き換えは、メソッドの上書きとも呼ばれます。
(2) サブクラスのメソッドが親クラスのメソッドと同じメソッド名、戻り値の型、パラメータリストを持つ場合、新しいメソッドは元のメソッドを上書きします。
親クラスの元のメソッドが必要な場合は、現在のクラスの親クラスを参照する super キーワードを使用できます。
(3) サブクラス関数のアクセス変更権限は、親クラスのアクセス変更権限より低くすることはできません。
以下は書き換えの例です:
概念: オブジェクトのメソッドを呼び出すためのメカニズム。
動的バインディングの裏話:
1. コンパイラーは、オブジェクト宣言の型とメソッド名をチェックして、すべての候補メソッドを取得します。上記の例の Base クラスのテストをコメントアウトしようとすると、コンパイルは成功しません。
2. オーバーロードの決定: コンパイラーはメソッド呼び出しのパラメーターの型をチェックし、上記の候補メソッドから 1 つだけを選択します (このプロセス中に暗黙的な型変換が行われます)。
コンパイラーが複数を見つけた場合、または何も見つからなかった場合、コンパイラーはエラーを報告します。上記の例の Base クラスのテスト (バイト b) をコメントアウトしてみます。実行結果は 1 1 です。
3. メソッドのタイプが priavte static Final で、Java が静的コンパイルを使用する場合、コンパイラーはどの
メソッドを呼び出すかを正確に認識します。
4. プログラムが実行中で動的バインディングを使用してメソッドを呼び出す場合、仮想マシンはオブジェクトの実際の型と一致するメソッド バージョンを呼び出す必要があります。
この例では、b が指す実際の型は TestOverriding であるため、b.test(0) はサブクラスのテストを呼び出します。
ただし、サブクラスは test(byte b) をオーバーライドしないため、 b.test((byte)0) は親クラスの test(byte b) を呼び出します。
親クラスの(バイトb)をコメントアウトすると、2番目のステップで暗黙の型がintに変換され、最終的にサブクラスのtest(int i)が呼び出されます。
学習の要約:
ポリモーフィズムはオブジェクト指向プログラミングの機能であり、メソッドとは何の関係もありません
簡単に言うと、同じメソッドが異なる入力データに応じて異なる処理を実行できることを意味します。メソッド
オーバーロード - 異なるパラメータリストを使用する (静的ポリモーフィズム)
サブクラスが親クラスから同じメソッドを継承する場合、入力データは同じですが、親クラスとは異なる応答を作りたい場合は、親クラスのメソッドをオーバーライドします
つまり、サブクラスのメソッドを書き直します - 同じパラメーター、異なる実装 (動的ポリモーフィズム)
OOP の 3 つの主要な特徴: 継承、ポリモーフィズム、カプセル化。 System.out.print(b);
} } L Public Class TestoverRiding Extends Base
{
void test (int i) {
++;
System.out.println (i);
{ ■ Base B = new TestOverriding();
オーバーライドの主な利点は、サブクラスに固有の特性を定義できることです:
public class Father{
public void speech(){
System.out.println(Father);
}
}
public class Son extends Father{
public void speech(){
}
}
これはポリモーフィズムとも呼ばれ、オーバーライドメソッドは継承関係があるため、オーバーライド メソッドは親クラスの非プライベート メソッドのみをオーバーライドできます。
上記の例で、Fatherクラスのspeak()メソッドがprivateの場合、SonクラスはFatherクラスのspeak()メソッドをオーバーライドできません。このとき、Sonクラスのspeak()メソッドは定義されたspeak()メソッドと同等になります。 Son クラスで。
親クラスの speech() メソッドが最終的なものになると、メソッドが public、protected、またはデフォルトによって変更されたかどうかに関係なく、Son クラスはコードをコンパイルしようとすると、親クラスの speech() メソッドをオーバーライドできなくなります。コンパイラはエラーを報告します。例:
public class Father{
final public void speech(){
System.out.println("Father");
}
}
public class Son extends Father{
public void speech( ; これはサブクラスによってオーバーライドされ、同じパッケージ内にない場合はオーバーライドできません。
Father クラスの speech() メソッドがプロト化されると、同じパッケージ内のそのサブクラスによってオーバーライドされるだけでなく、異なるパッケージのサブクラスによってもオーバーライドされる可能性があります。
メソッドをオーバーライドするためのルール:
1. パラメータリストはオーバーライドされたメソッドと完全に同じである必要があります。そうでない場合は、上書きとは言えず、オーバーロードと呼ばれます。
2. 戻り値の型は、オーバーライドされたメソッドの戻り値の型と常に同じである必要があります。そうでない場合は、上書きと呼ばれることはできず、オーバーロードと呼ばれます。
3. アクセス修飾子の制限は、オーバーライドされたメソッドのアクセス修飾子より大きくなければなりません (public>protected>default>private)
4. オーバーライドするメソッドは、新しいチェック例外をスローしたり、オーバーライドされたメソッド Declare よりも大きくてはいけません。より広範なチェック例外。例:
親クラスのメソッドはチェック済み例外 IOException を宣言します。このメソッドをオーバーライドする場合、例外をスローすることはできません。スローできるのは IOException のサブクラスの例外のみであり、チェックされていない例外をスローできます。
オーバーロードのルール:
1. 異なるパラメーター リストが必要です。
2. パラメーター リストが異なる限り、非クリティカルな戻り値を使用できます。修飾子にアクセスします。
4. さまざまな例外をスローできます。
書き換えとオーバーロードの違いは次のとおりです。
多重定義されたメソッドを呼び出すときに、コード サイズを大幅に削減できます。異なるパラメータが渡される限り、異なる関数または戻り値を持ちます。
書き換えとオーバーロードをうまく活用すると、明確で簡潔な構造を持つクラスを設計できます。コードを書く過程において、書き換えとオーバーロードは非常に重要な役割を果たしていると言えます。 ! ! !
学習プロセス中に問題が発生した場合、または学習リソースを入手したい場合は、Java 学習交換グループ (159610322) に参加してください。一緒に Java を学びましょう!以上がJava におけるオーバーロードと書き換えの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











DeepSeek:R1とV3バージョンの詳細な比較は、最高のAIアシスタントを選択するのに役立ちます! Deepseekにはすでに数千万人のユーザーがいて、そのAIの対話機能は好評を博しています。しかし、R1およびV3バージョンに面しているときに混乱していますか?この記事では、2つの違いを詳細に説明して、最適なバージョンを選択するのに役立ちます。 DeepSeeKR1とV3バージョンのコアの違い:V3バージョンの設計目標は、複雑な問題推論、ディープロジック分析、多機能大型言語モデルに焦点を当てており、スケーラビリティと効率アーキテクチャ、パラメーター強化学習最適化アーキテクチャ、パラメータースケール1.5に焦点を当てています。 10億から700億人のMOEハイブリッドの専門家アーキテクチャ、合計パラメーターは6710億にもなり、各トークンは370億を活性化します

Deepseekai ToolユーザーガイドとFAQ Deepseekは、強力なAIインテリジェントツールです。 FAQ:異なるアクセス方法の違い:Webバージョン、アプリバージョン、API呼び出しの間に機能に違いはありません。アプリは、Webバージョンのラッパーにすぎません。ローカル展開は蒸留モデルを使用します。これは、DeepSeek-R1のフルバージョンよりもわずかに劣っていますが、32ビットモデルには理論的には90%のフルバージョン機能があります。居酒屋とは何ですか? Sillytavernは、APIまたはOllamaを介してAIモデルを呼び出す必要があるフロントエンドインターフェイスです。壊れた制限とは何ですか

暗号通貨市場は活況を呈しており、リーダーとしてのビットコインは多くの投資家の注目を集めています。多くの人が好奇心が強い:ビットコインには在庫がありますか?答えはノーです。ビットコイン自体は株式ではありませんが、投資家はさまざまなチャネルを通じてビットコイン関連の資産に間接的に投資することができます。これについては、この記事で詳しく説明します。ビットコイン投資の代替品:ビットコインに直接投資する代わりに、投資家はビットコイン市場に参加できます:ビットコインETF:これは、資産ポートフォリオにビットコインまたはビットコイン先物契約が含まれている株式取引市場で取引されています。これは、ビットコインを直接保持することなく、在庫投資に慣れている投資家にとって比較的便利なオプションです。ビットコインマイニングカンパニー株:これらの企業のビジネスはビットコインマイニングとビットコインの保有です

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

従来の金融市場では、市場前および市場外の取引とは、通常の取引期間以外の取引活動を指します。暗号通貨市場は24時間取引されていますが、Bitgetのようなトレーディングプラットフォームは、同様の機能、特に株式と暗号通貨を同時に取引する包括的なプラットフォームも提供しています。この記事では、市場前と市場の取引の違いを明確にし、通貨価格への影響を調査します。市場前取引とアフターマーケット取引の4つの大きな違い:市場前取引とアフターマーケット取引と通常の取引期間の主な違いは、取引時間、流動性、価格変動、取引量:取引時間:取引時間:公式取引が開始される前に行われる4つの側面にあります。流動性:営業時間前後の取引の流動性は低く、トレーダーはほとんどありません。

元のタイトル:Bittensor = Aibitcoin:S4MMYETH、分散型AI研究元の翻訳:Zhouzhou、BlockBeats編集者注:この記事では、Bockchain Technologyを通じて中央集権的なAI企業の独占を破り、オープンおよび共同AI Ecosemsytemを促進することを望んでいます。 Bittensorは、さまざまなAIソリューションの出現を可能にし、Tao Tokensを通じてイノベーションを刺激するサブネットモデルを採用しています。 AI市場は成熟していますが、両節は競争リスクに直面し、他のオープンソースの対象となる場合があります

ビットコインの投資ブームは、世界初の分散型デジタル資産であるため、増加し続けています。中国はかつてビットコインの最大の市場でしたが、政策の影響は取引制限につながりました。今日、韓国は世界の主要なビットコイン市場の1つになっており、投資家はITとその国内ビットコインの違いに疑問を投げかけています。この記事では、両国のビットコイン市場間の違いに関する詳細な分析を行います。韓国と中国のビットコイン市場の違いの分析。たとえば、2024年10月下旬、韓国のビットコインの価格はかつてでした

Pepeの急増の後、Mutmは2025年により安定した投資選択になることができますか? Pepe(Pepe)は初期の投資家を収益性を高めましたが、その暴力的な価格の変動は、多くの人々がその長期的な見通しに疑問を抱かせました。ミーム通貨市場が乱流を続けているため、トレーダーはより基本的な利点を持つプロジェクトに焦点を合わせ始めており、Mutuumfinance(MUTM)もその1つです。これは、実際の金融アプリケーションに焦点を当てた分散型貸出プラットフォームです。投機的な投機に依存しているPepeとは異なり、MUTMは、ユーザーが受動的収入を借りて獲得できる構造化されたdefiエコシステムを構築します。その前販売は100万米ドルを超えており、トークンの販売率の第1フェーズは97%を超え、早期投資
