スーパークラスのプライベートインスタンス変数にアクセスする方法を理解するのに問題があります。名前と品種が同じであるかどうかを比較するDogクラスのequalsメソッドを作成していますが、nameはPet内のプライベートインスタンス変数です(Dogが継承します)。
これが私のコードです:
public class Pet {
private String name;
public Pet(){
name = "";
}
public Pet(String name){
this.name = name;
}
public boolean equals(Pet other){
return this.name.equals(other.name);
}
}
と私の犬のクラス:
public class Dog extends Pet {
private String breed;
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public Dog(){
breed = "";
}
@Override
public boolean equals(Object obj){
if(obj == null){
return false;
}
if(obj.getClass() != this.getClass()){
return false;
}else{
Pet p = (Pet)obj;
Pet q = (Pet)this;
Dog temp = (Dog)obj;
boolean name = q.equals(p);
boolean bred = breed.equals(temp.breed);
return name && bred;
}
}
}
私のメインクラスでは:
Dog d1 = new Dog("Harry", "Puggle");
Dog d2 = new Dog("Harry", "Pug");
System.out.println(d1.equals(d2));
何らかの理由で、Petクラスのequalメソッドを使用し続けます。
ありがとう