需求:
所有的汽車都具備品牌,車牌號,日租金,
大巴車bus:很多座位
普通轎車car:有排量
商務車mpv:空間大
根據不同的車型有不同計算日租金和租車的流程
大巴車:日租金1000,押金10萬,三天起租
租車流程是5年內沒有任何扣分(boolean)的a駕照"a"
普通轎車:日租金400,押金5萬,1天起租
租車流程是1年內沒有任何扣分的c駕照
商務車:日租金800押金8萬2天起租
租車流程是3年起租,沒有扣分的b駕照
要求:應用多型,簡單工廠,從鍵盤錄入選擇車型
1抽象共同的方法
//做乙個介面,把計算日租金和租車流程的方法寫進去
public inte***ce ivehicle
2實現介面
//實現上面的介面
public abstract class vehicle implement ivehicle
public vehicle(string vehicleid,
string brand,
int perrent,
int deposit,
int begindayrent,
int daysofrent)
public string getvehicleid()
public void setvehicleid(string vehicleid)
public string getbrand()
public void setbrand(string brand)
public int getperrent()
public void setperrent(int perrent)
public int getdeposit()
public void setdeposit(int deposit)
public int getbegindayrent()
public void setbegindayrent(int begindayrent)
public int getdaysofrent()
public void setdaysofrent(int daysofrent)
/*** 所有有的車型都是用此種方式計算租金
*/ @override
public double calcrent()
@override
public abstract boolean leaseoutflow() ;
}
3具體實現類
//bus繼承自vehicle
public class bus extends vehicle
public bus(string vehicleid,
string brand,
int percent,
int deposit,
int begindayrent,
int daysofrent,
int seats)
public int getseats()
public void setseats(int seats)
//重寫租車流程方法
@override
public boolean leaseoutflow() else
}else
return flag;
}}
//同理
public class car extends vehicle
public car(string vehicleid,
string brand,
int percent,
int deposit,
int begindayrent,
int daysofrent,
double displacement)
public double getdisplacement()
public void setdisplacement(double displacement)
//轎車的租車流程
@override
public boolean leaseoutflow() else
}else
return flag;
}}
//同理
public class mpv extends vehicle
public mpv(string vehicleid,
string brand,
int percent,
int deposit,
int begindayrent,
int daysofrent,
string space)
public string getspace()
public void setspace(string space)
//商務車的租車流程
@override
public boolean leaseoutflow() else
}else
return flag;
}}
4.建立管理交通工具的類
public class managevehicle else if(("bus").equals(type))else if(("mpv").equals(type))
return vehicle;
} //計算租金
public static double calcrent(ivehicle iv)
//租車流程
public static boolean leaseoutfowl(ivehicle iv)
}
5.主函式
public class demo1 else if(choice==2)else if(choice==3)else
//根據型別生產車輛
vehicle ve = managevehicle.getvehicle(type);
boolean flag=managevehicle.leaseoutfowl(ve);
if(flag)
}}
多型 抽象類 介面
抽象類介面 什麼是多型?同乙個物件,在不同時刻表現出來的不同形態 1.有繼承 實現的前提 2.有方法的重寫 3.有父類引用指向子類物件 例 animal a new cat 成員變數訪問 父類中有的屬性,才能正常編譯 編譯看左邊 如子類也有相同屬性,訪問執行出來的是父類中的屬性值 成員方法訪問 父類...
多型 抽象類 介面
同一物件,在不同時刻表現出來的不同形態 多型的前提和實現 有繼承 實現關係 有方法重寫 有父類引用指向子類物件 多型中成員訪問特點 成員變數 編譯看左邊,執行看左邊 成員方法 便宜看左邊,執行看右邊 為什麼成員方法和成員變數的訪問不一樣呢?因為成員方法有重寫,而成員變數沒有 多型的好處和弊端 好處 ...
多型 抽象類 介面
1.多型的使用方式 父類引用指向子類物件 同一型別的物件引用指向了不同型別的子類物件,具體方法的實現不同 呼叫的方法需要是子類和父類都有的,但是執行的是子類的,就是執行醫生類覆蓋的 重寫的 eat方法 也就是所謂的 編譯看左邊,執行看右邊!能夠呼叫什麼方法,取決於引用的型別,而方法中具體怎麼執行,要...