内部类模拟实现多继承

使用内部类让Java实现“多继承”
众所周知,Java没有像c++那样支持多继承,但是我们可以使用接口或内部类来模拟实现多继承。
我们使用内部类来实现一个继承自消费者,又继承自生产者的派生类。
实际上Java之所以设计出内部类这个概念,一方面是为了更好的封装性,另一方面就是借助内部类模拟实现多继承。
首先我们定义一个消费者抽象基类


[java]   view plain copy print ?
  1. /** 
  2.  * Consumer Class 
  3.  *@author androidyue 
  4.  *Last Modified:2011-12-13    上午11:04:56 
  5.  */  
  6. public abstract  class Consumer {  
  7.     protected float buyPrice;  
  8.     protected abstract void  buyGoods();  
  9. }  


以下是生产者抽象基类


[java]   view plain copy print ?
  1. /** 
  2.  * Producer Class 
  3.  *@author androidyue 
  4.  *Last Modified:2011-12-13    上午11:04:02 
  5.  */  
  6. public abstract class Producer {  
  7.     protected  float cost;  
  8.     protected abstract void produce();  
  9. }  



使用内部类实现“多继承”的派生子类


[java]   view plain copy print ?
  1. /** 
  2.  *Java实现“多继承” 
  3.  *@author androidyue 
  4.  *Last Modified:2011-12-13    上午11:00:25 
  5.  */  
  6. public class InnerClassDemo extends Producer {  
  7.     private ConsumerBuyer buyer;  
  8.       
  9.     public void desribeMySelf(){  
  10.         System.out.println("使用Java模拟多继承");  
  11.         this.produce();  
  12.         this.buyer=new ConsumerBuyer();  
  13.         this.buyer.buyGoods();  
  14.           
  15.     }  
  16.       
  17.     @Override  
  18.     protected void produce() {  
  19.         this.cost=100f;  
  20.         System.out.println("我是生产者,我以每件"+this.cost+"RMB的成本生产一件产品,然后以20000元价格对外出售");  
  21.     }  
  22.       
  23.     class ConsumerBuyer extends Consumer{  
  24.   
  25.   
  26.         @Override  
  27.         protected void buyGoods() {  
  28.             this.buyPrice=0f;  
  29.             System.out.println("我是消费者,我以"+this.buyPrice+"RMB 买了一件售价20000元的商品,不信吧,因为我也是生产者!^_^");  
  30.               
  31.         }  
  32.           
  33.     }  
  34.   
  35.   
  36. }  


  
在程序入口调用
  
[java]   view plain copy print ?
  1. /** 
  2.  *  the entrance of application 
  3.  *@author androidyue 
  4.  *Last Modified:2011-12-13    上午11:20:06 
  5.  */  
  6. public class AppMain {  
  7.     public static void main(String[] args){  
  8.         InnerClassDemo demo=new InnerClassDemo();  
  9.         demo.desribeMySelf();  
  10.     }  
  11. }  


显示结果:
使用Java模拟多继承
我是生产者,我以每件100.0RMB的成本生产一件产品,然后以20000元价格对外出售
我是消费者,我以0.0RMB 买了一件售价20000元的商品,不信吧,因为我也是生产者!^_^

你可能感兴趣的:(内部类模拟实现多继承)