logo

Java のコンストラクター チェーンとは何ですか?

Javaでは、 コンストラクターの連鎖 を呼び出すシーケンスです コンストラクター オブジェクトを初期化するとき。インスタンスのみを使用して複数のコンストラクターを次々に呼び出したい場合に使用されます。このセクションでは、次のことについて説明します。 Java でのコンストラクター チェーンについて、適切な例を示して詳しく説明します。 簡単に見てみましょう Javaのコンストラクターとは何ですか。

コンストラクタ

ジャワ 、コンストラクターはメソッドと同じですが、唯一の違いは、コンストラクターの名前がクラス名と同じであることです。クラスのインスタンスを作成するために使用されます。クラスのオブジェクトを作成すると自動的に呼び出されます。戻り値の型はありません。コンストラクターは次のことはできないことに注意してください。 抽象的な最後の同期した そして 静的 コンストラクターをオーバーライドすることはできません。

Java には 2 種類のコンストラクターがあります。

  • デフォルト コンストラクター (引数なしのコンストラクターとも呼ばれます)
  • パラメータ化されたコンストラクタ

コンストラクターの連鎖

コンストラクター チェーンでは、コンストラクターは同じクラス内の別のコンストラクターから呼び出されます。このプロセスは次のように呼ばれます。 コンストラクターの連鎖。 それは継承によって発生します。派生クラスのインスタンスを作成する場合、最初に継承クラス (基本クラス) のすべてのコンストラクターが呼び出され、その後、呼び出しクラス (派生クラス) のコンストラクターが呼び出されます。

コンストラクターの連鎖は次の 2 つの方法で実現できます。

Javaでメソッドを呼び出す方法
    同じクラス内:コンストラクターが同じクラスに属している場合は、次を使用します。 これ 基本クラスから:コンストラクターが異なるクラス (親クラスと子クラス) に属している場合は、 素晴らしい 基本クラスからコンストラクターを呼び出すためのキーワード。

コンストラクターの順序を変更しても出力には影響しないことに注意してください。

Java のコンストラクター チェーンとは何ですか

コンストラクターチェーンの必要性

実行するタスクが 5 つあるとします。これらのタスクを実行するには 2 つの方法があります。単一のコンストラクターですべてのタスクを実装するか、単一のコンストラクターで個別のタスクを作成するかのいずれかです。

コンストラクター チェーン メカニズムを使用すると、単一のコンストラクターで複数のタスクを実装できます。したがって、このような種類の問題に直面したときは常に、コンストラクター チェーンを使用する必要があります。コンストラクターチェーンを使用すると、プログラムをより読みやすく理解しやすくすることができます。

コンストラクターチェーンのルール

  • を使用した表現 これ キーワードはコンストラクターの最初の行である必要があります。
  • 注文コンストラクターチェーンでは関係ありません。
  • を使用しないコンストラクターが少なくとも 1 つ存在する必要があります。 これ

別のコンストラクターからのコンストラクターの呼び出し

コンストラクターの呼び出しは、次の 2 つの方法で実行できます。

URI と URL
    this() キーワードを使用すると、次のようになります。同じクラス内で現在のクラスのコンストラクターを呼び出したい場合に使用されます。super() キーワードを使用すると、次のようになります。これは、基本クラスからスーパークラスのコンストラクターを呼び出したい場合に使用されます。

注: 同じコンストラクター ブロック内で、this() と super() を同時に使用することはできません。

Java プログラムを通してこれら 2 つの概念を理解しましょう。

コンストラクターのチェーン例

現在のクラス コンストラクターの呼び出し

を使用しております これ() 同じクラス内で現在のクラスのコンストラクターを呼び出す場合は、キーワードを使用します。 this() の使用は必須です。 JVM のように自動的に配置しないでください。 素晴らしい() キーワード。 this() はコンストラクターの最初の行でなければならないことに注意してください。少なくとも 1 つのコンストラクターが存在する必要があります。 this() キーワード

構文:

 this(); or this(parameters list); 

例えば:

 this(); this('Javatpoint'); 

Java プログラムを作成し、現在のクラスのコンストラクターを呼び出してみましょう。

CSSの下線テキスト

コンストラクターチェーン.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

出力:

Java のコンストラクター チェーンとは何ですか

上の例では、パラメータを渡さずにクラスのインスタンスを作成しました。最初にデフォルトのコンストラクタを呼び出し、デフォルトのコンストラクタは this() により呼び出しをパラメータ化されたコンストラクタにリダイレクトします。パラメーター化されたコンストラクター内のステートメントが実行され、デフォルトのコンストラクターに戻ります。その後、デフォルト コンストラクター内の残りのステートメントが実行され、オブジェクトは正常に初期化されます。コンストラクターの呼び出しシーケンスは次のとおりです。

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

スーパークラスコンストラクターの呼び出し

場合によっては、子クラス (派生クラス) からスーパークラス (親クラス) コンストラクターを呼び出す必要がある場合、派生クラス コンストラクターで super() キーワードを使用します。 super() を記述することは、JVM が自動的に行うため、オプションです。常に最初の行に記述する必要があります。子クラスでスーパークラスのコンストラクターを呼び出そうとすると、構文エラーが発生します。

構文:

 super(); or super(Parameter List); 

素晴らしい(): スーパークラスの引数なしまたはデフォルトのコンストラクターを呼び出します。

スーパー(パラメータ): これは、スーパークラスのパラメーター化されたコンストラクターを呼び出します。

スーパークラスのコンストラクターはサブクラスに継承できないことに注意してください。 super キーワードを使用してサブクラス コンストラクターから呼び出すことができます。

Java プログラムを作成し、継承されたクラスにコンストラクター チェーンを実装してみましょう。

SSH 完全形式

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

出力:

Java のコンストラクター チェーンとは何ですか