内部类模拟实现多继承

来源:互联网 发布:大数据研发工程师笔试 编辑:程序博客网 时间:2024/06/04 19:36
使用内部类让Java实现“多继承”
众所周知,Java没有像c++那样支持多继承,但是我们可以使用接口或内部类来模拟实现多继承。
我们使用内部类来实现一个继承自消费者,又继承自生产者的派生类。
实际上Java之所以设计出内部类这个概念,一方面是为了更好的封装性,另一方面就是借助内部类模拟实现多继承。
首先我们定义一个消费者抽象基类


[java] view plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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 plaincopyprint?
  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元的商品,不信吧,因为我也是生产者!^_^
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 感冒鼻涕流的多怎么办 小孩感冒鼻塞怎么办最简单方法 鼻子痒老打喷嚏流鼻涕怎么办 眼睛红痒鼻子流鼻涕怎么办 19个月宝宝流鼻血怎么办 9个月宝宝流鼻血怎么办 8个月宝宝流鼻血怎么办 4个月宝宝流鼻血怎么办 20个月宝宝发烧流鼻血怎么办 60天宝宝老鼻塞怎么办 10个月宝宝头被撞到流鼻血怎么办 狗狗受凉吐了怎么办 狗狗咳嗽流鼻涕一直不好怎么办 宝宝感冒咳嗽流鼻涕发烧怎么办 狗狗感冒咳嗽流鼻涕怎么办 9岁儿童咳嗽鼻塞怎么办 三个月大的狗狗流鼻涕怎么办 3个月小狗干呕流鼻涕怎么办 狗狗流鼻涕怎么办有浓 小狗狗感冒了怎么办呢 狗狗一直擤鼻涕怎么办 小狗感冒流黄鼻涕怎么办 六个月宝宝鼻塞流鼻涕怎么办 小狗吃太多吐了怎么办 狗狗晕车一直吐怎么办 狗狗已经晕车了怎么办 狗狗得犬瘟怎么办 泰迪坐车吐了怎么办 小孩感冒流鼻涕带血怎么办 孩子鼻子流鼻涕有血丝怎么办 鼻子过敏流鼻涕有血丝怎么办 孕妇感冒头痛鼻涕带血怎么办 孕妇感冒鼻塞鼻涕带血怎么办 孕晚期感冒流鼻涕打喷嚏怎么办 孕晚期感冒鼻塞流鼻涕怎么办 怀孕初期鼻涕一直流怎么办 孩子一直流鼻水怎么办 9个月宝宝流鼻涕怎么办 8个月婴儿流鼻涕怎么办 3岁宝宝鼻塞咳嗽怎么办 又感冒又咳嗽了怎么办