0

だから私はJavaを学んでいますが、まだ自分自身を初心者だと思っています.

これが私のコードです:

import java.net.*;

public class HomePage {
String owner;
URL address;
String category;

public HomePage(String inOwner, String inAddress)
    throws MalformedURLException {

    owner = inOwner;
    address = new URL(inAddress);
}

public HomePage(String inOwner, String inAddress, String inCategory)
    throws MalformedURLException {

    this(inOwner, inAddress);
    category = inCategory;
}
}

私の質問は次のとおりです。同じ名前の 2 つのオブジェクト (HomePage) を作成し、ほぼ同じものを処理するにはどうすればよいですか (2 番目の HomePage の inCategory を除く)。

このセクションでは、エラーの処理方法を学習しているため、このクラスは私が理解している別のクラスで使用されています。しかし、なぜ私がほとんど同一の 2 つのオブジェクトを作成できるのか、なぜ作成できるのかはわかりません。ありがとう!

参考までに、コンパイルの他のクラスを次に示します: (評判とコード内のリンクのため、ペーストビンする必要がありました)

4

5 に答える 5

6

ほとんど同じもの (2 番目の HomePage の inCategory を除いて)

おっしゃる通り、同じではありません。メソッドの一意性は、メソッド名とその引数で構成される署名によって決定されます。引数のタイプや量が異なる限り、同じ名前を使用できます。

ここではコンストラクタについて話していることに注意してください。お探しの用語は ですoverloading

ご覧のとおり、2 番目のコンストラクターは を使用しthis(inOwner, inAddress);ます。これは、指定された引数で最初のコンストラクターを呼び出します。同じ効果を得るためにコードをコピーする必要がないようにします。複数のコンストラクターを使用する理由は、外部クラスが異なる引数を持つオブジェクトを作成できるようにするためです。

于 2013-07-18T19:59:02.657 に答える
0

同一の 2 つのオブジェクトを作成していません。

これら 2 つはコンストラクターであるため、1 つのコンストラクターを呼び出すだけで、実際のオブジェクトの構築を支援できます。

public HomePage(String inOwner, String inAddress)プロパティの所有者とアドレスを設定するコードが既にあるため、コードの重複を避けるために、それを呼び出してこれら 2 つのプロパティを設定し、カテゴリを初期化するpublic HomePage(String inOwner, String inAddress, String inCategory)行を追加するだけです。category = inCategory;

于 2013-07-18T20:00:05.137 に答える
0

メソッドのオーバーロードの例が表示されています。

この場合、さまざまなパラメーターのセットを使用して の型を作成するためにオーバーロードされているのはコンストラクターですHomePage( を知らなくてもインスタンスを作成できますinCategory)。

于 2013-07-18T20:01:56.670 に答える