私はクラスの作成方法とオブジェクト間の "is"関係の作成方法を学んでいます。以下のコードでは、ファーストクラスのPersonがPersonを定義し、次に、2番目のクラスMarryDemoで、誰かが結婚しているか、その配偶者であるか、その住所などを確認します。その後もすぐに離婚します。このコードは、Jan Skansholm Javaの初めからの例に基づいています。インスタンスメソッドが文字列の代わりに16進数を返しています
問題はで、代わりに私は[email protected]
を得た配偶者の名前の、私は「ヌル」「クリス・ハンフリーズ」、「43ニュージャージージェッツ・ストリート」であるとMarryDemoの主な方法の結果を期待していることです配偶者の住所と離婚後の配偶者は、私が期待した通りに残っていた。
[email protected]
は何を表していますか?それは "Kris Humphries"という名前で参照されるオブジェクトの場所ですか?名前の代わりに[email protected]
が表示されるのはなぜですか?
//defines a person
public class Person {
//instance variables
private String name, address;
private Person spouse;
//constructor
public Person(string n) {
name = n;
}
//instance methods
public String getName() {
return name;
}
public void marry(Person p) {
spouse = p;
p.spouse = this;
}
public Person isMarriedTo() {
return spouse;
}
... //more methods for returning address, divorcing, etc.
}
//
public class MarryDemo {
public static void main (String[] arg) {
String name1 = "Kim Kardashian";
String name2 = "Kris Humphries";
Person p1 = new Person(name1);
Person p2 = new Person(name2);
p1.marry(p2);
System.out.println(p1.marriedTo());
p2.setAddress("43 New Jersey Jets Drive");
System.out.println(p1.marriedTo().getAddress());
p1.divorce();
System.out.println(p1.marriedTo());
}
}
あなたのSystem.out.println(p1.marriedTo()); はまれですが、オブジェクトを印刷しようとしています。 System.out.println(p1.marriedTo()。getName());私が推測する通り、 – simaremare
私のコードスニペットの文脈では、toString()メソッドを実装/上書きするか、System.out.println(p1.marriedTo()。getName())を書くことが望ましいですか? – milou