当前位置: 首页 > news >正文

南京哪家网站做的好一人之下王野

南京哪家网站做的好,一人之下王野,seo免费优化网址软件,大连网站开发问题背景 在review代码的时候#xff0c;发现了一个关于Java继承和多态的组合问题。 问题比较少#xff0c;但是个人觉得是一个很好的问题#xff0c;可以加深对继承和多态的理解。 问题如下#xff1a; 在一个service中发现#xff0c;一个方法里面调用了两个不同的函数…问题背景 在review代码的时候发现了一个关于Java继承和多态的组合问题。 问题比较少但是个人觉得是一个很好的问题可以加深对继承和多态的理解。 问题如下 在一个service中发现一个方法里面调用了两个不同的函数两个函数返回的对象不一样。A对象继承了B对象。 问题分析 这里其实就产生了一个问题在调用A对象的方法时调用的是A对象的方法但是在调用B对象的方法时调用的是B对象的方法。 那么为什么不调用一个呢 查看代码才发现因为特殊情况需要返回A对象B对象没有的值所以就实现了两个接口。 那么就产生了思考为什么不能直接调用一个接口减少代码量呢 * 多态 多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定而是在程序运行期间才确定即一个引用变量到底会指向哪个类的实例对象该引用变量在程序运行期间才确定这就是多态的概念。Java语言中的多态Polymorphism是面向对象编程的三大基本特性之一它表示同一个行为具有多个不同表现形式或形态的能力。 在Java中多态通常通过方法的重写Override和方法的重载Overload以及接口和父类引用子类对象来实现。 多态的基本概念 方法的重写Override子类可以重写父类中的方法使得当使用父类类型的引用指向子类对象时调用的是子类重写后的方法。 方法的重载Overload在同一个类中可以有多个同名但参数列表不同的方法这称为方法的重载。虽然重载不是严格意义上的多态但它与多态在概念上有一定的联系。 接口和父类引用子类对象Java中父类类型的引用可以指向子类对象调用的是实际对象子类对象的方法。这是多态性最典型的表现。 多态的示例 下面是一个通过重写父类方法和使用父类引用指向子类对象来实现多态的示例 import com.alibaba.fastjson.JSON; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; import java.io.Serializable; /* 父类*/ Data class Animal implements Serializable {Serialprivate static final long serialVersionUID 1L;private String name;private String color;void makeSound() {System.out.println(The animal makes a sound);} }/* 子类1狗*/ EqualsAndHashCode(callSupertrue)Data class Dog extends Animal implements Serializable {Serialprivate static final long serialVersionUID 1L;//品种 private String breed; private String gender;Overridevoid makeSound() {System.out.println(The dog barks);} }/* 子类2猫*/ EqualsAndHashCode(callSupertrue)Data class Cat extends Animal implements Serializable {Serialprivate static final long serialVersionUID 1L;//是否有胡须private String hasWhiskers;//生命次数private int livesLeft;Overridevoid makeSound() {System.out.println(The cat meows);} }// 主类 public class Main {public static void main(String[] args) {// 创建Animal类型的数组可以存放Animal及其子类的对象Animal[] animals new Animal[2];// 创建Dog和Cat对象并赋值给Animal类型的数组animals[0] new Dog();animals[1] new Cat();// 遍历数组调用每个对象的makeSound方法for (Animal animal : animals) {animal.makeSound(); // 多态的体现调用的是实际对象的方法}} }在这个例子中我们有一个Animal父类以及两个子类Dog和Cat。这两个子类都重写了父类的makeSound方法。在Main类的main方法中我们创建了一个Animal类型的数组并分别将Dog和Cat对象赋值给数组的元素。当我们遍历数组并调用每个元素的makeSound方法时实际调用的是每个对象自己的makeSound方法实现这就是多态的体现。 运行上述代码输出将会是 The dog barks The cat meows每个对象都按照它们自己的类型来执行相应的行为尽管它们都是通过Animal类型的引用来调用的。这就是Java中多态的一个简单示例。通过多态我们可以提高代码的灵活性和可维护性使得程序能够更容易地扩展和适应新的需求。 解决方法 到了这里大家应该明白了吧其实我们可以反过来用在接口的返回对象的时候定义返回类型为Animal。然后在实际使用中在程序运行期间才确定具体的Animal对象Cat或者Dog然后直接引用属性就OK了。 后续就算这个接口返回的更多的类型只要是继承的都可以返回父类的方式进行解决如果改动太大还是另外写会更好一些 public class Main {static Animal getAnimalInfo(int type){ if (type 1) {// 创建Dog对象Dog dog new Dog(); dog.setBreed(拉布拉多);dog.setGender(公); dog.setName(小黑);dog.setColor(白色);return dog;} else if (type 2) {Cat cat new Cat();cat.setHasWhiskers(有胡须);cat.setLivesLeft(9);cat.setName(小白);cat.setColor(黑色); return cat;} return null;}public static void main(String[] args) {Dog dog (Dog)getAnimalInfo(1); System.out.println(JSON.toJSONString(dog));Cat cat (Cat)getAnimalInfo(2);System.out.println(JSON.toJSONString(cat));} } 输出的结果是java{breed:拉布拉多,color:白色,gender:公,name:小黑} {color:黑色,hasWhiskers:有胡须,livesLeft:9,name:小白}这个我们就可以把子类对应的那个代码抽离放到一起来快速解决这个问题。 PS这样的设计其实还是有问题的但是是个老系统的代码把这个设计改起来会比较麻烦就只能一步步去改了。
http://www.zqtcl.cn/news/774806/

相关文章:

  • 网站标签化wordpress 输出评论内容 函数
  • 明星个人网站设计汕头网络推广公司
  • 深圳有哪些做网站公司好武夷山建设局网站
  • 怎么设立网站赚广告费一个网站可以做多少关键字
  • 网站刚建好怎么做能让百度收录成都定制网站建
  • thinkphp网站开发技术做电脑租赁网站
  • 网站设计评语中午版wordpress
  • 邢台企业手机网站建设汕头网站制作后缀
  • 微网站后台内容设置做网站语言排名2018
  • 嘉兴网站制作网站建设外贸营销推广平台有哪些
  • 网站开发集广州高端网站定制开发价格
  • 网站开发培训成都网站建设 报价单 doc
  • 苏州哪里有做淘宝网站的WordPress模板博客主题
  • 网站做中转做任务 网站
  • 深圳住房建设局网站网站的建设教程
  • 6免费建站的网站在线建筑设计
  • 哪些网站做任务可以赚钱的建设厅网站如何查询企业信息
  • 深圳网站设计+建设首选深圳市服装网站建设需求分析报告
  • 肥城网站制作浙江省建设厅信息港官网
  • 手机网站建设进度南宁企业网站设计
  • 建设学校网站方案大淘客网站上的推广怎么做
  • 哪个网站可以免费学设计南阳网站建设页面
  • 外贸公司建网站一般多少钱南京网站建设小程
  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司
  • 消防中队网站建设筑云电商网站建设公司
  • 天津网站建设天津中国东盟建设集团有限公司网站
  • 正版传奇手游官方网站宁波建设银行网站首页
  • 中铁建设集团招标网站wordpress区块编辑无法使用
  • 做电影网站需要的服务器配置网站关键词排名优化应该怎么做