나는 Dog, Cat 및 Rabbit과 같은 여러 하위 클래스가있는 추상 클래스 인 Animal을 사용합니다.객체에 상수 할당
각 하위 클래스는 Animal 클래스의 생성자를 사용하지만 하위 클래스의 모든 객체도 상수가 필요합니다. Dog 객체는 항상 animalNumber = 1이고 모든 Dog 객체는 maximumNumberOfAnimals = 5 특성을 가져야합니다. 그러나 모든 Cat 객체는 항상 animalNumber = 2이어야하고 모든 Cat 객체는 maximumNumberOfAnimals = 10 속성을 가져야합니다.
이 코드를 작성할 수 있습니까? 이것은이 다른 서브 클래스
public class Cat extends Animal {
public static final int ANIMALNUMBER= 2;
public static final int MAXIMUMNUMBERALLOWED= 10;
//the constructor
public Cat (int weight, int height, int animalNumber, int maximumNumberAllowed) {
super(weight, height)
Cat.animalNumber = ANIMALNUMBER;
Cat.maximumNumberAllowed = MAXIMUMNUMBERALLOWED;
}
}
에게 있습니다
public class Dog extends Animal {
public static final int ANIMALNUMBER= 1;
public static final int MAXIMUMNUMBERALLOWED= 5;
//the constructor
public Dog (int weight, int height, int animalNumber, int maximumNumberAllowed) {
super(weight, height)
Dog.animalNumber = ANIMALNUMBER;
Dog.maximumNumberAllowed = MAXIMUMNUMBERALLOWED;
}
}
서브 클래스에게 있습니다
public abstract class Animal {
private int weight;
private int height;
public Animal (int weight, int height) {
setWeight(weight);
setHeight(height);
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
}
:이 슈퍼 클래스입니다
:
이
내가 지금까지 무엇을 가지고 내가 뭐야? nt는 다음과 같습니다.개 Lassie = new Dog (40, 60, 1, 5)를 사용하여 새 'Dog'를 만들기 위해 생성자를 호출하면됩니다. 그러나 나는 이것을 허용해서는 안됩니다 : Dog Lassie = new Dog (40, 60, 2, 10) 모든 Dog에 대해 ANIMALNUMBER는 1이어야합니다. 모든 Cat에 대해 ANIMALNUMBER는 2 여야합니다. 인스턴스 변수이지만 클래스의 모든 인스턴스에 대해 동일해야합니다.
이것은 말합니다 : 최종 필드 Dog.ANIMALNUMBER는 할당 할 수 없습니다. 그러나 나는 또한 그것이 작동하지 않을 것이라고 생각합니다. 제안 사항이 있으십니까?
미리 감사드립니다.
생성자에서 그것들을 재 할당하는 동안 그것들은'final'과'static'을 사용합니다. 당신은 아마 어떤 것들을 섞어 버릴 것입니다. 당신은 아마 당신이이 변수들을 가지고하려고하는 것을 추가해야 할 것입니다. – SomeJavaGuy
'빌라 '는 어디에서 왔습니까? 당신이 준 코드에있는 것이 아닙니다. 이 오류는 당신의 질문과 관련이없는 것처럼 보입니다. – RealSkeptic
죄송합니다. 다른 클래스에서 동일한 오류가 발생했습니다. 실제로, 이것은이 질문과 관련이 없습니다. – Waterfles