达内LOGO和北京达内网址达内科技培训项目:Java培训 3G培训 Android培训 软件测试培训北京达内服务电话
java培训
使用内部类让Java实现“多继承”

  使用内部类让Java实现“多继承”

  众所周知,Java没有像c++那样支持多继承,但是我们可以使用接口或内部类来模拟实现多继承。

  我们使用内部类来实现一个继承自消费者,又继承自生产者的派生类。

  实际上Java之所以设计出内部类这个概念,一方面是为了更好的封装性,另一方面就是借助内部类模拟实现多继承。

  首先我们定义一个消费者抽象基类

  view plainprint?

  /** * Consumer Class *@author androidyue *Last Modified:2011-12-13    上午11:04:56 */ public abstract  class Consumer { protected float buyPrice;protected abstract void  buyGoods();}

  以下是生产者抽象基类

  view plainprint?

  /** * Producer Class *@author androidyue *Last Modified:2011-12-13    上午11:04:02 */ public abstract class Producer { protected  float cost;protected abstract void produce();}

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

  view plainprint?

  /** *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();

  }

  @Override protected void produce() { this.cost=100f;System.out.println("我是生产者,我以每件"+this.cost+"RMB的成本生产一件产品,然后以20000元价格对外出售");}

  class ConsumerBuyer extends Consumer{

  @Override protected void buyGoods() { this.buyPrice=0f;System.out.println("我是消费者,我以"+this.buyPrice+"RMB 买了一件售价20000元的商品,不信吧,因为我也是生产者!^_^");

  }

  }

  }

  在程序入口调用

  view plainprint?

  /** *  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元的商品,不信吧,因为我也是生产者!^_^