我有這個問題很長一段時間,但所有回答我的人沒有給我一個正確的答案。我認爲,接口在OOP語言用於多態性與情況類似下面,我不知道如何處理它, [在Java]如何在OOP語言中正確使用界面
讓我們下面的接口和兩個類,
public interface Vehicle{
public int noOfWheels();
public String movingMethod();
}
public class Car implements Vehicle{
public int noOfWheels(){
return 4;
}
public String movingMethod(){
return "Drive";
}
}
public class Flight implements Vehicle{
public int noOfWheels(){
return 5;
}
public String movingMethod(){
return "Fly";
}
//a behaviour only applicable to a flight
public int noOfWings(){
return 5;
}
}
=======================================
simulation
Vehicle v1 = new Car();
System.out.println(v1.noOfWheels());
System.out.println(v1.movingMethod);
Vehicle v2 = new Flight();
System.out.println(v2.noOfWheels());
System.out.println(v2.movingMethod);
System.out.println(v2.noOfWings());//this is not working as Vehicle interface doesn't have this method.
那麼,我們如何才能爲這類問題實現解決方案。我知道我們可以爲航班類型創建另一個界面,但我使用這個例子來表達我的問題。
您可以使用'instanceof'運算符來檢查'v2'的類型並將其轉換爲具體類型'Flight'。然後你可以直接使用'Flight'的方法。 – hoaz
調用noOfWings()方法會給出錯誤,因爲它並未在Vehicle接口中聲明,並且僅適用於Flight沒有將該方法放入Vehicle接口中的情況。我需要使用所有車輛類型作爲車對象使用。我知道這是不可能的。有沒有合適的模式來實現這一點。 – Harsha
5是一個有趣的翅膀順便說一句。 –