interface 收費 ;定義一個收費接口
{
public void 收取費用();
}
interface 調節溫度 ;定義一個調節溫度的接口
{
public void controlTemperature();
}
class 公共汽車 implements 收費 ;公共汽車這個類實現收費這個接口
{
public void 收取費用() ;實現接口時必須實現他的全部功能,即實現所有的函數功能
{
System.out.println("公共汽車:一元/一張,不計算公里數");
}
}
class 出租車 implements 收費 , 調節溫度
{
public void 收取費用()
{
System.out.println("出租車 :1.60元/公里,起價3元");
}
public void controlTemperature()
{
System.out.println("安裝了Hair空調");
}
}
class 電影院 implements 收費 , 調節溫度
{
public void 收取費用()
{
System.out.println("電影院:門票,十元/張");
}
public void controlTemperature()
{
System.out.println("安裝了中央空調");
}
}
class example10
{
public static void main(String args[])
{
公共汽車 七路=new 公共汽車();
出租車 天宇=new 出租車();
電影院 紅星=new 電影院();
七路.收取費用();
天宇.收取費用();
紅星.收取費用();
天宇.controlTemperature();
紅星.controlTemperature();
}
}
//接口回調是指:可以把實現某一接口的類創建的對象的引用賦給該接口聲明的接口變量中。那麼該接口變量就可以調用被類實現的接口中的方法。
實際上,當接口變量調用類實現的接口中的方法時,就是通知相應調用接口中的方法
interface ShowMessage
{
void 顯示商標(String s);
}
class TV implements ShowMessage
{
public void 顯示商標(String s)
{
System.out.println(s);
}
}
class PC implements ShowMessage
{
public void 顯示商標(String s)
{
System.out.println(s);
}
}
public class example11
{
public static void main(String args[])
{
ShowMessage sm;
sm=new TV();
sm.顯示商標("長城牌電視機");
sm=new PC();
sm.顯示商標("聯想奔月5008PC");
}
}
方法重載(overloading method)
方法重載是讓類以統一的方式處理不同類型數據的一種手段。Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法, 這就是多態性。下面是一個方法重載的例子:
class MethodOverloading {
viod receive(int i) {
System.out.println("Received one int data");
System.out.println("i="+i);
}
viod receive(float f) {
System.out.println("Received one float data");
System.out.println("f="+f);
}
viod receive(String s) {
System.out.println("Received a String");
System.out.println("s="+s);
}
}
注意,Java的方法重載要求同名的方法必須有不同的參數表,僅有返回類型不同是不足以區分兩個重載的方法。
方法重寫(overiding method)
在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。 若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。 如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。