使用内部类让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();

}

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

}

}


}



  


在程序入口调用


  


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