類別只能繼承一個類別,但可實作多個介面
介面可以繼承多個介面
類別圖
Code
public interface 有價格的 { int getPrice(); }
public interface 有名稱的 { String getName(); }
public interface 商品 extends 有名稱的, 有價格的 { } class 屠龍刀 implements 商品 { @Override public String getName() { return "屠龍刀"; } @Override public int getPrice() { return 6000; } } class 倚天劍 implements 商品 { @Override public String getName() { return "倚天劍"; } @Override public int getPrice() { return 4000; } } class 青龍劍 implements 商品 { @Override public String getName() { return "青龍劍"; } @Override public int getPrice() { return 8000; } }
interface 折扣活動 { int 計算(商品[] products); } class 父親節 implements 折扣活動{ @Override public int 計算(商品[] products) { int sum=0; for (int i=0;i<products.length;i++){ sum+=products[i].getPrice(); } return (int)(sum*0.8); } } class 母親節 implements 折扣活動{ @Override public int 計算(商品[] products) { int sum=0; for (int i=0;i<products.length;i++){ sum+=products[i].getPrice(); } return (int)(sum*0.7); } }
public class 收銀機 { private 折扣活動 strategy; private 商品[] products; public 收銀機(折扣活動 strategy, 商品[] products) { this.strategy = strategy; this.products = products; } public void print(){ String s=""; int sum=0; for (int i=0;i<products.length;i++){ s=products[i].getName()+"\t"+products[i].getPrice(); sum+=products[i].getPrice(); System.out.println(s); } System.out.println("總金額\t"+sum+"\t折扣後\t"+strategy.計算(products)); } }
public class Test { public static void main(String[] args) { // 商品[] products={new 倚天劍(),new 屠龍刀()}; // 收銀機 cashier=new 收銀機(new 父親節(),products); 商品[] products={new 倚天劍(),new 屠龍刀(),new 青龍劍()}; 收銀機 cashier=new 收銀機(new 母親節(),products); cashier.print(); } }
沒有留言:
張貼留言