Java——多态2

154

package com.Apr.thirty;

/**
 * 多态在实际开发中的作用,以下以主人喂养宠物为例说明多态的作用:
 *  1、分析:主人喂养宠物这个场景要实现需要进行类型的抽象:
 *  	- 主人【类】
 *  	- 主人可以喂养宠物,所以主人有喂养的这个动作
 *  	- 宠物【类】
 *  	- 宠物可以吃东西,所以宠物有吃东西的这个动作
 *  
 *  2、面向对象编程的核心:定义好类,然后将类实例化为对象,给一个环境驱使一下,让各个对象之间协作起来形成一个系统。
 *  
 *  3、多态的作用是什么?
 *  	降低程序的耦合度,提高程序的扩展力。
 *  	能使用多态尽量使用多态。
 *  	父类型引用指向子类型对象。
 *  
 *  核心:面向抽象编程,尽量不要面向具体编程。
 *
 */

public class Test {

	public static void main(String[] args) {
		//创建主人对象
		Master zhangsan = new Master();
		//创建猫对象
		//Cat tom = new Cat();
		//主人喂养猫
		//zhangsan.feed(tom);
		zhangsan.feed(new Cat());
		//创建小狗对象
		//Dog erHa = new Dog();
		//主人喂小狗
		//zhangsan.feed(erHa);
		zhangsan.feed(new Dog());
		//创建蛇对象
		Snake mangShe = new Snake();
		//主人喂蟒蛇
		zhangsan.feed(mangShe);
	}

}
package com.Apr.thirty;

/**
 * 主人
 */

//这种方式没有使用java语言当中的多态机制,存在的缺点:Master的扩展力很差,因为只要加一个新的宠物,Master类就需要添加新的方法。
/*
public class Master {

	//喂养宠物的方法
	public void feed(Cat c) {
		c.eat();
	}

	public void feed(Dog d) {
		d.eat();
	}

}
//Master和Cat、Dog这两个类型的关联程度很强,耦合度很高,扩展力差。
*/

//降低程序的耦合度【解耦合】,提高程序的扩展力【软件开发的一个很重要的目标】
public class Master {

	//Master主人类面向的是一个抽象的Pet,不再面向具体的宠物
	//提倡:面向抽象编程,不要面向具体编程。
	//面向抽象编程的好处是,耦合度低,扩展力强。
	public void feed(Pet pet) { //Pet pet是一个父类型的引用
		pet.eat();
	}

}
package com.Apr.thirty;

/**
 * 宠物
 * 
 * @author Sam
 *
 */
public class Pet {

	/**
	 * 宠物都可以吃东西
	 */
	public void eat() {

	}
}
package com.Apr.thirty;

/**
 * 宠物小猫
 */
public class Cat extends Pet {

	// 小猫爱吃鱼
	public void eat() {
		System.out.println("小猫正在吃鱼!");
	}
}
package com.Apr.thirty;

/**
 * 宠物小狗
 */
public class Dog extends Pet {

	/**
	 * 宠物小狗喜欢吃骨头
	 */
	public void eat() {
		System.out.println("小狗正在啃骨头!");
	}
}
package com.Apr.thirty;

//新的宠物
public class Snake extends Pet {

	public void eat() {
		System.out.println("蛇吞象!");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值