![](/img/trans.png)
[英]How to omit the constructor parameter with a default value when calling Kotlin in Java?
[英]Java - how to use a value from a class property when calling a constructor
我有以下問題:
Animal
、 Cat
和Bug
。color
和leg_number
。 讓它們在構造函數中初始化。Cat
和Bug
類調用方法move
的功能。 讓該方法返回一個字符串“我正在用leg_number
腿移動!”,其中“ leg_number
”是leg_number
中設置的leg_number
。Bird
的新類。 添加屬性wing_number
。 添加允許我們使用Bird
類調用方法move
的功能。 讓該方法返回字符串“我正在用leg_number
腿移動!” 如果wing_number
沒有適用的值。 如果wing_number
確實具有適用的值,則返回字符串“我正在飛行”。到目前為止,我的代碼如下:
class Animal {
protected String color;
protected int leg_number;
public Animal(String color, int leg_number) {
this.color = color;
this.leg_number = leg_number;
}
public void move() {
System.out.println("I'm moving with " + leg_number + " legs!");
}
}
class Cat extends Animal {
String color;
int leg_number;
public Cat(String color, int leg_number) {
super(color, leg_number);
this.color = "orange";
this.leg_number = 4;
}
@Override
public void move() {
System.out.println("I'm moving with " + leg_number + " legs!");
}
}
class Bug extends Animal {
String color;
int leg_number;
public Bug(String color, int leg_number) {
super(color, leg_number);
this.color = "green";
this.leg_number = 16;
}
@Override
public void move() {
System.out.println("I'm moving with " + leg_number + " legs!");
}
}
class Bird extends Animal {
String color;
int leg_number;
int wing_number;
public Bird(String color, int leg_number, int wing_number) {
super(color, leg_number);
this.color = "yellow";
this.leg_number = 2;
this.wing_number = wing_number;
}
public void move(int wing_number) {
if (wing_number > 0) {
System.out.println("I'm flying");
} else {
System.out.println("I'm moving with " + leg_number + " legs!");
}
}
}
我想我按照說明在構造函數中設置 leg_number 的值做了什么。 不過,我不確定如何在構造函數調用中使用它。 看來,如果我有Animal myCat = new Cat("orange", 4);
我沒有按照作業的說明進行操作。 但我不知道還有什么可以放在那里。 我試過使用(color, leg_number)
和(this.color, this.leg_number)
,但正如預期的那樣,它們不起作用(我假設是因為對象尚未實例化)。 我嘗試在構造函數本身的參數列表中設置值,但這也不起作用。 我嘗試讓構造函數不帶參數,但我必須調用確實需要參數的super
構造函數,所以我會以這種方式得到錯誤。
我在這里缺少什么?
編輯:我試圖在 Main 方法中實例化這些。
您的子類中不需要String color
和int leg_number
。 您也不需要覆蓋所有子類中的move()
方法,除了Bird
。 此外,您在Bird
move()
方法不應采用任何參數,而應使用wing_number
屬性。 話雖如此,請嘗試以下操作:
class Animal {
protected String color;
protected int leg_number;
public Animal(String color, int leg_number) {
this.color = color;
this.leg_number = leg_number;
}
public void move() {
System.out.println("I'm moving with " + leg_number + " legs!");
}
}
class Cat extends Animal {
public Cat(String color, int leg_number) {
super(color, leg_number);
}
}
class Bug extends Animal {
public Bug(String color, int leg_number) {
super(color, leg_number);
}
}
class Bird extends Animal {
private int wing_number;
public Bird(String color, int leg_number, int wing_number) {
super(color, leg_number);
this.wing_number = wing_number;
}
@Override
public void move() {
if (wing_number > 0) {
System.out.println("I'm flying");
} else {
super.move();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.