使用内部类让Java实现“多继承”
众所周知,Java没有像c++那样支持多继承,但是我们可以使用接口或内部类来模拟实现多继承。
我们使用内部类来实现一个继承自消费者,又继承自生产者的派生类。
实际上Java之所以设计出内部类这个概念,一方面是为了更好的封装性,另一方面就是借助内部类模拟实现多继承。
首先我们定义一个消费者抽象基类
以下是生产者抽象基类
使用内部类实现“多继承”的派生子类
在程序入口调用
显示结果:
使用Java模拟多继承
我是生产者,我以每件100.0RMB的成本生产一件产品,然后以20000元价格对外出售
我是消费者,我以0.0RMB 买了一件售价20000元的商品,不信吧,因为我也是生产者!^_^
众所周知,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元的商品,不信吧,因为我也是生产者!^_^