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;
}
}
这是一个子类
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 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;
}
}
我最终想要的是这样的:
这不仅表示:不能分配最后一个字段dog.animalnumber,而且我认为它也行不通。有什么建议吗?
提前感谢!
所以对于每只狗,动物数量应该是1,对于每只猫,动物数量应该是2。
你把事情搞得太复杂了。最简单的解决方案是删除构造函数参数并保持AnimalNumber
不变。
但是
public abstract class Animal {
// common fields
public Animal (int weight, int height) {
// initialize
}
public abstract sting giveSound();
}
public class Dog extends Animal {
@Override
public sting giveSound(){
return "Wooff";
}
public class Cat extends Animal {
@Override
public sting giveSound(){
return "Meaw";
}
public class Rabbit extends Animal {
@Override
public sting giveSound(){
return "";
}
我得承认这是个拐角处的案子...
我可以根据他们的班级来计算吗?
是,通过使用映射
:
public abstract class Animal {
public addToCount(Map<String,Integer> counters){
// gets the class name of the child that has been called *new* on...
String myClassName = getClass().getName();
Integer oldCount = conters.getOrDefault(myClassName, Integer.ZERO);
conters.put(myClassName,oldCount.add(Integer.ONE));
}
}
问题内容: 我是Java的新手,因此我对对象分配有一些疑问。例如, 假设变量的测试类中定义的,我说得对假设T1和T2点到修改同一个对象会影响和?其实我测试了一下,似乎我是对的。但是,当我尝试相同的操作时,修改仅发生在不影响另一侧的一侧。这是什么原因呢? 编辑:我尝试使用String的情况。 我通过测试String的大小写来意识到我的错误,因为它是不可变的。我认为修改字符串的情况实际上是将对“ 1”
假设我有一个变量,我想设置一些默认值。 这两种选择的好处/缺点是什么? 使用对象传播 或者用Object.assign 这就是让我好奇的promise。
根据这个答案,https://stackoverflow.com/a/12020435/562222,将一个对象分配给另一个对象只是复制引用,但让我们看看以下代码段: 运行它可以提供:
问题内容: 我多次听说,在实例化对象时应该执行以下操作: “接口”名称=新的“类”(); 例如,针对实现的类链表: 实现许多接口,包括队列,双端队列等。上面的代码和 要么 为什么必须同时指定两次类型?似乎多余,但oracledocs似乎没有提及。 问题答案: 在Java 7中是多余的。可以将其重写为。 你想写类似的原因: 如果您改变主意,则可以为您提供以后更改数据收集的自由。这样,您的代码将更加灵
主要内容:1.对象如何定位的,2.对象怎么分配1.对象如何定位的 1.句柄方式 2.直接指针方式 一个直接寻址:访问速度快 一个是间接寻址:垃圾回收起来比较稳定 第二个比如如果是G1垃圾回收器的话,垃圾回收会进行垃圾的复制。会将垃圾移到另一个位置。如果用直接指针的方式的话就会发现T来回发生变化,效率低,所以句柄方式,GC回收比较稳定 句柄方式: 第一个指针是真正new出来的对象 第二个指针是类型数据指针 2.对象怎么分配 对象首先会尝试在栈上
问题内容: 我正在尝试在用户点击操作时将其分配给操作。 我知道如何为a创建动作,但是如何模仿a的相同行为却使用a ? 问题答案: 您需要一个。要进行设置,请使用以下命令: (您也可以使用,并为其分配图片,不添加文字,而只需连接即可)