使用內部類讓Java實現“多繼承”
眾所周知,Java沒有像c++那樣支援多繼承,但是我們可以使用介面或內部類來類比實現多繼承。
我們使用內部類來實現一個繼承自消費者,又繼承自生產者的衍生類別。
實際上Java之所以設計出內部類這個概念,一方面是為了更好的封裝性,另一方面就是藉助內部類類比實現多繼承。
首先我們定義一個消費者抽象基類
/** * Consumer Class *@author androidyue *Last Modified:2011-12-13 上午11:04:56 */public abstract class Consumer {protected float buyPrice;protected abstract void buyGoods();}
以下是生產者抽象基類
/** * Producer Class *@author androidyue *Last Modified:2011-12-13 上午11:04:02 */public abstract class Producer {protected float cost;protected abstract void produce();}
使用內部類實現“多繼承”的派生子類
/** *Java實現“多繼承” *@author androidyue *Last Modified:2011-12-13 上午11:00:25 */public class InnerClassDemo extends Producer {private ConsumerBuyer buyer;public void desribeMySelf(){System.out.println("使用Java類比多繼承");this.produce();this.buyer=new ConsumerBuyer();this.buyer.buyGoods();}@Overrideprotected void produce() {this.cost=100f;System.out.println("我是生產者,我以每件"+this.cost+"RMB的成本生產一件產品,然後以20000元價格對外出售");}class ConsumerBuyer extends Consumer{@Overrideprotected void buyGoods() {this.buyPrice=0f;System.out.println("我是消費者,我以"+this.buyPrice+"RMB 買了一件售價20000元的商品,不信吧,因為我也是生產者!^_^");}}}
在程式入口調用
/** * the entrance of application *@author androidyue *Last Modified:2011-12-13 上午11:20:06 */public class AppMain {public static void main(String[] args){InnerClassDemo demo=new InnerClassDemo();demo.desribeMySelf();}}
顯示結果:
使用Java類比多繼承
我是生產者,我以每件100.0RMB的成本生產一件產品,然後以20000元價格對外出售
我是消費者,我以0.0RMB 買了一件售價20000元的商品,不信吧,因為我也是生產者!^_^