继承和组合 在框架复杂情况下的区别(案例)

本文通过实例对比了继承与组合两种面向对象编程技术的特点。通过创建超人与异能者类,展示了继承如何提供基本属性与行为,而组合则允许灵活地添加与更换功能。

继承的运用在这里简单阐述一下,主要讲组合的区别。
关于继承:先创一个person类,再创一个superMan类继承,子类有特有方法:超能力。
然后创建一个ZhiZhuXia(蜘蛛侠)类,一个BianFuXia(蝙蝠侠)类,两个类都继承superMan类,那么这两个大侠就有了普通人的属性方法,并且有了超人的特有方法:超能力。

好了下面开始讲讲组合的案例,现在需要的是有一个异能者,它触碰到什么超人就有什么超能力。
先看UML图:
在这里插入图片描述

class Person {
	private int age=21;
	private String name="人";

	public int getAge() {
		return age;
	}
	public String getName() {
		return name;
	}
}

interface ISuperPower{
	public void superPower();
}


class YiNengZhe extends Person implements ISuperPower{
	protected ISuperPower isp;
	
	public void superPower() {
		isp.superPower();
		
	}

}

class BianFuXia extends YiNengZhe{
	public void superPower() {
		System.out.println("蝙蝠侠超能力!");
	}
}

class ZhiZhuXia extends YiNengZhe{
	public void superPower() {
		System.out.println("蜘蛛侠超能力!");
	}
}

public class Test3 {
	public static void main(String[] args) {
		YiNengZhe ynz=new YiNengZhe();
		ynz.isp=new ZhiZhuXia();
		ynz.superPower();
		ynz.isp=new BianFuXia();
		ynz.superPower();
	
	}
}

所以组合的优势在于,能够实现一个并不固定的某具体功能的类。也是通过继承和多态体现出来的。
可以说是用了组合+继承+多态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值