多态常见应⽤场景举例
package day0611;
public class Test {
/**多态在实际开发中的使⽤,以下为主⼈喂养宠物的例⼦说明多态的作⽤
*1.主⼈喂养宠物这个场景需要进⾏类型的抽象:
实例化类和实例化对象*---主⼈【类】 宠物【类】
*--主⼈可以喂养宠物 所以主⼈有喂养这个动作
*-- 宠物【类】
*--宠物可以吃东西,所以宠物有吃东西这个动作
*
*--2.⾯向对象编程的核⼼:定义好类,将类实例化为对象,给⼀个环境驱使⼀下,让各个对象之间协作起来形成⼀个系统
*3.多态的作⽤是什么
*/
public static void main(String[] args) {//有多态后,测试类中没什么⼤的变化,还是要把具体的事物猫 狗类创建。
//创建主⼈对象
Master ZhangSan=new Master();
Cat cat=new Cat();//类是⽆法进⾏协作的,需要把类实例为对象,对象在java中才可以进⾏协作。
ZhangSan.feed(cat);//ZhangSan和cat都是创建的对象,通过对象吧事物联系了起来。
Dog dog=new Dog();
ZhangSan.feed(dog);//在这个传参的过程中,相当于发⽣了:Pet pet=new Dog();这就是向上转型,或者说是⽗类的引⽤指向了⼦类的对象,这就呼应的多态的定义:Pet pet=new Dog();
//那么,综合起来,有继承 有⽅法的重写,有向上转型。者就完成了多态。
}
}
package day0611;
/**
* 主⼈
*/
public class Master {
/**
* 这种⽅式没有使⽤多态,存在的缺点是:master的扩展能⼒差,因为要增加⼀个新的宠物,Master类就要增加⼀个新的⽅法
* 喂养宠物的⽅法:增加了喂狗的⽅法后,这个就要改了,不合理
*/
/*public void feed(Cat c){
c.eat();//这⾥并没有创建对象,也没有静态类,之所以可以直接调⽤是因为传参后,相当于传了对象,引⽤,可以直接调⽤,记住就可以了
}
public void feed(Dog d){
d.eat();
}*/
//Master和Cat Dog这两个类型的关联类型很强,耦合度很⾼,扩展能⼒差
//降低程序的耦合度【解耦合】,提⾼程序的扩展⼒,【软件开发的⼀个重要的⽬标】
public void feed(Pet pet){//参数是pet,两类建⽴了联系
pet.eat();
}
}
package day0611;
/**
* 宠物类
*
* @author Administrator
*
*/
public class Pet {
public void eat(){
/**
*所有的宠物都可以吃东西
*/
}
}
package day0611;
/**
* 宠物⼩猫
*/
public class Cat extends Pet{
//⼩猫爱吃鱼
public void eat(){
System.out.println("⼩猫正在吃鱼");
}
}
package day0611;
/**
* 宠物⼩狗
*/
public class Dog extends Pet{
//宠物⼩狗喜欢吃⾻头
public void eat(){
System.out.println("⼩狗正在吃⾻头");
}
}
总结:多态的核⼼是在哪个类⾥可以体现多态,这个类的⽅法如果不使⽤多态,就需要写多个⽅法。那个类⾥使⽤多态的语句,⽐如是饲养员Person这个类。⽐如饲养⽅法,饲养的是狗 猫 需要不同的⽅法。重要的就是测试类和主⼈类,测试类中创建对象,主⼈类中定义声明核⼼⽅法feed()。
另有概述参考本⼈另⼀篇java多态。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论