Computable.java
public interface Computable { int MAX = 46; int f(int x); }
China.java
public class China implements Computable { //China類實現Computable接口 int number; public int f(int x) { //不要忘記public關鍵字 int sum=0; for(int i=1;i<=x;i++) { sum=sum+i; } return sum; } }
Japan.java
public class Japan implements Computable { //Japan類實現Computable接口 int number; public int f(int x) { return MAX+x; } }
Example6_1.java
public class Example6_1 { public static void main(String args[]) { China zhang; Japan henlu; zhang=new China(); henlu=new Japan(); zhang.number=32+Computable.MAX; henlu.number=14+Computable.MAX; System.out.println("zhang的學號"+zhang.number+",zhang求和結果"+zhang.f(100)); System.out.println("henlu的學號"+henlu.number+",henlu求和結果"+henlu.f(100)); } }
接口的理解
假如轎車、卡車、拖拉機、摩托車和客車都是機動車的子類,其中機動車是一個抽象類。機動車中有諸如“剎車”、“轉向”等方法是合理的,即要求轎車、卡車、拖拉機、摩托車和客車都必須具體實現“剎車”、“轉向”等功能。但是機動車類包含有兩個抽象類方法“收取費用”、“調節溫度”,那么所有子類都要重寫這兩個方法,即給出方法體,產生各自的的收費獲取控制溫度的行為。這顯然不符合人們的思維邏輯,因為拖拉機可能不需要“”收取費用”、“調節溫度”的功能,而其他一些類,如飛機、輪船等可能也需要具體實現“收取費用”、“調節溫度”。
接口的思想在於它要求某些類有相同的方法,但方法的具體內容(方法體的內容)可以不同,即要求這些類實現接口,以保證這些類一定有接口中所聲明的方法(即所謂的方法綁定)。
Example6_2.java
abstract class MotorVehicles { abstract void brake(); } interface MoneyFare { void charge(); } interface ControlTemperature { void controlAirTemperature(); } class Bus extends MotorVehicles implements MoneyFare { void brake() { System.out.println("公共汽車使用轂式剎車技術"); } public void charge() { System.out.println("公共汽車:一元/張,不計算公里數"); } } class Taxi extends MotorVehicles implements MoneyFare,ControlTemperature { void brake() { System.out.println("出租車使用盤式剎車技術"); } public void charge() { System.out.println("出租車:2元/公里,起價3公里"); } public void controlAirTemperature() { System.out.println("出租車安裝了Hair空調"); } } class Cinema implements MoneyFare,ControlTemperature { public void charge() { System.out.println("電影院:門票,十元/張"); } public void controlAirTemperature() { System.out.println("電影院安裝了中央空調"); } } public class Example6_2 { public static void main(String args[]) { Bus bus101 = new Bus(); Taxi buleTaxi = new Taxi(); Cinema redStarCinema = new Cinema(); bus101.brake(); bus101.charge(); buleTaxi.brake(); buleTaxi.charge(); buleTaxi.controlAirTemperature(); redStarCinema.charge(); redStarCinema.controlAirTemperature(); } }
個人理解:一些公共類方法大家都要用到的就繼承,一些特殊的就定義一個接口來實現。
class Taxi extends MotorVehicles implements MoneyFare,ControlTemperatur