題目描述
Java允許共變回傳,可以利用繼承關係來改變方法的傳回型態。
Java允許子類別在覆寫父類別方法的時候,可以將覆寫後的方法型態改為原方法回傳型態的子類別型態。
依照以下類別結構來實作程式:
Flower:String whats_Your_Name()→"I have many names and types" └Jasmine:String whats_Your_Name()→"Jasmine" └Lili:String whats_Your_Name()→"Lili" └Lotus:String whats_Your_Name()→"Lotus" State:Flower your_National_Flower()→Flower的物件實體 └WestBengal:Jasmine your_National_Flower()→Jasmine的物件實體 └Karnataka:Lotus your_National_Flower()→Lotus的物件實體 └AndhraPradesh:Lili your_National_Flower()→Lili的物件實體
原題網址
輸入格式
不需處理
輸出格式
不需處理
解題概念
先實作Flower類別,接著實作出Jasmine、Lili、Lotus類別來繼承Flower類別,並覆寫whats_Your_Name方法。
再來實作State類別,接著實作出WestBengal、Karnataka、AndhraPradesh類別來繼承State類別,並覆寫your_National_Flower方法。
使用「@Override」記號可以在編譯時期確保有成功覆寫到父類別的方法。
參考答案
class Flower {
String whats_Your_Name() {
return "I have many names and types";
}
}
class Jasmine extends Flower {
@Override
String whats_Your_Name() {
return "Jasmine";
}
}
class Lily extends Flower {
@Override
String whats_Your_Name() {
return "Lily";
}
}
class Lotus extends Flower {
@Override
String whats_Your_Name() {
return "Lotus";
}
}
class State {
Flower your_National_Flower() {
return new Flower();
}
}
class WestBengal extends State {
@Override
Jasmine your_National_Flower() {
return new Jasmine();
}
}
class Karnataka extends State {
@Override
Lotus your_National_Flower() {
return new Lotus();
}
}
class AndhraPradesh extends State {
@Override
Lily your_National_Flower() {
return new Lily();
}
}