首页 > 编程语言 >JavaSE--多态在开发中的作用

JavaSE--多态在开发中的作用

时间:2023-08-09 10:47:15浏览次数:41  
标签:-- void 多态 class Pet Master Dog JavaSE public

一、多态在开发中的作用

  1、降低程序的耦合度,提高程序的扩展力

  public class Master(){

    public void feed(Dog d){}

    public void feed(Dog d){}

  }

  以上代码中:Master和Dog、Cat关系紧密,耦合度高,导致扩展力很差

  public class Master(){

    public void feed(Pet pet){}

  }

  以上代码表示:Master和Cat、Dog的关系脱离,Master重点关注的是Pet类,这样耦合度就降低了,提高了软件的扩展力

 

在实际的开发中,随着时间的推移,客户有了新的需求,作为软件开发人员,必须满足需求

在我们需要增加一个新宠物的话,只需要增加一个新的动物类就可以,主人同样可以喂养,宠物也可吃

// 所有宠物的父类
public class Pet{
    public void feed(){}
}
// 宠物狗狗类
public class Dog extends Pet{
    public void eat(){
        System.out.println("狗狗吃骨头");
    }
}
// 宠物猫猫类
public class Cat extends Pet{
    public void eat(){
        System.out.println("猫猫吃鱼");
    }
}
// 宠物鹦鹉类
public class YingWu extends Pet{
    public void eat(){
        System.out.println("鹦鹉吃虫子吧");
    }
}
// 主人类
// 主人养宠物
public class Master{
    public void feed(Pet pet){
        pet.eat();
    }
}
public class Test{
    public static void main(String[] args){
        Master m = new Master();
        Dog d = new Dog();
        m.feed(d);
        Cat c = new Cat();
        m.fedd(c);
    }
}

 

标签:--,void,多态,class,Pet,Master,Dog,JavaSE,public
From: https://www.cnblogs.com/hyy-0/p/17609962.html

相关文章

  • C++ vector 容器浅析
    C++vector容器浅析一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺......
  • 格律诗乐器的生产流程和质量控制
    格律诗乐器的生产流程和质量控制格律诗乐器是一种传统而独特的中国乐器,它在音色、音质和外观上都有着高要求。为了制造出具有优秀品质的格律诗乐器,需要经过一系列严格的生产流程和质量控制步骤。一、原材料采购和质量评估格律诗乐器的制作过程始于原材料的采购。制作格律诗乐器......
  • @Constraint注解,做特殊的入参校验
    //@Constraint是Java中的注解之一,用于标记自定义的约束注解。约束注解通常用于数据验证,用来限制字段的取值或格式,确保数据的合法性。@Constraint(validatedBy=FlagValidate.class) 第一步:先建一个@interfaceFlag的注解校验类,注解相关的校验类为FlagValidate.Class:im......
  • undefined_reference_to_XXX问题总结
    转:"undefinedreferencetoXXX"问题总结今天看到一篇关于“undefinedreferencetoXXX”的文章,觉得讲解得很不错,特转载之。原文链接:"undefinedreferencetoXXX"问题总结引言我们在Linux下用C/C++工作的时候,经常会遇到"undefinedreferencetoXXX"的问题,直白地说就是在链......
  • 线性基
    背个板子即可。以下是前缀线性基。structxor_set{ inta[32]; inlinevoidadd(longlongval){ for(inti=31;i>=0;i--){ if(!(val&(1ll<<i)))continue; if(a[i])val^=a[i]; else{a[i]=val;break;} } } inlineintquery(i......
  • 在单元测试中使用Jest模拟VS Code extension API
    对VSCodeextension进行单元测试时通常会遇到一个问题,代码中所使用的VSCode编辑器的功能都依赖于vscode库,但是我们在单元测试中并没有添加对vscode库的依赖,所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VSCodeextension中的,所以它并不受我们的......
  • 种花 2023.8.9
    种下一朵小花,过一会来摘下。2017。这是我个人,人生的一道分界线。一个偶然但不完全偶然的机会,我与省内相隔几百公里以外的另一座城市产生了命运的联系。而现在,我与出生地的联系被斩断了。我渴望走出去看看大千世界,但所谓搬家不过是从一口井跳到了另一口井。我从未设想过如......
  • vue3 + ElementPlus 封装函数式弹窗组件
    需求场景:弹窗组件需要支持自定义的插槽内容,删除的弹窗也要使用这个组件,只是样式不一样而已,希望在父组件使用删除弹窗的时候直接调用某个方法就可以显示弹窗组件模拟cuDialog假设我的弹窗组件有以下的props和事件dialogVisible:控制弹窗显示和隐藏title:弹窗的标题showClose......
  • python:安装backgroundremover 0.2.4(Python 3.9.16)
    一,官方代码及文档:https://github.com/nadermx/backgroundremover二,安装backgroundremover的准备工作1,安装pytorch:https://blog.imgtouch.com/index.php/2023/08/03/rocky-linux-an-zhuang-pytorch-pytorch-2-1-python-3-9-16/2, 安装ffmpeg:https://blog.imgtouch.......
  • 分享 Java 开发中常用到的设计模式(一)
    分享Java开发中常用到的设计模式(一)前言不知道大家在开发的时候,有没有想过(遇到)这些问题:大家都是按需要开发,都是一个职级的同事,为什么有些人的思路就很清晰,代码也很整洁、易懂;而自己开发,往往不知道怎么下手设计,写完了也是bug一堆,codereview的时候更是频频被怼...感觉每天都是......