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

东莞网站空间wordpress迁移hexo

东莞网站空间,wordpress迁移hexo,最新新闻头条,wordpress建站位置为何有时要将子类对象赋值给父类引用,用父类来进行实例化? 这就要说多态的优势: 代码的扩展性和降低耦合度,而不是完全避免修改代码。 TuXing t new Changfangxing(); Changfangxing k (Changfangxing)t;原因1: 代码可拓展性 …

为何有时要将子类对象赋值给父类引用,用父类来进行实例化?

这就要说多态的优势: 代码的扩展性和降低耦合度,而不是完全避免修改代码。

TuXing t = new Changfangxing();
Changfangxing k = (Changfangxing)t;

原因1: 代码可拓展性

通过父类引用调用方法时,实际执行的是子类的实现。
这样,当需要拓展系统时,只需要添加新的子类,而不需要修改现有的代码逻辑。

Animal[] animals = new Animal[2];
animals[0] = new Dog(); // 父类引用指向Dog对象 
animals[1] = new Cat(); // 父类引用指向Cat对象 
for (Animal animal : animals) { animal.eat(); // 所有Animal子类都可以调用eat()方法 
}

• 使用 Animal 类型的数组可以存储所有 Animal 子类的对象。
• 这样可以统一处理不同类型的对象,而不需要为每种类型编写单独的代码。

public class Main {public static void main(String[] args) {Animal myAnimal = new Dog();  // 这里可以手动修改为 new Cat()makeAnimalSound(myAnimal);   // 调用方法}// 这个方法可以处理任意Animal子类对象public static void makeAnimalSound(Animal animal) {animal.makeSound();}
}

原因2:接口与实现类分离

降低耦合度,多态通过将接口(父类)和实现(子类)分离,降低代码的耦合度。调用者只需要知道父类的接口,而不需要关心具体的子类实现。

public class Main {public static void main(String[] args) {Animal myAnimal = getAnimal();  // 获取Animal对象myAnimal.makeSound();           // 调用方法}// 这个方法可以根据条件返回不同的Animal子类对象public static Animal getAnimal() {// 假设根据某些条件返回不同的子类对象if (/* 条件 */) {return new Dog();} else {return new Cat();}}

原因3: 工厂模式

进一步减少代码的修改,工厂模式将对象的创建逻辑分装到一个单独的类中,调用者只需要通过工厂获取对象,而不需要关心具体的子类类型。

class AnimalFactory {public static Animal createAnimal(String type) {if (type.equals("Dog")) {return new Dog();} else if (type.equals("Cat")) {return new Cat();} else {throw new IllegalArgumentException("Unknown animal type");}}
}public class Main {public static void main(String[] args) {Animal myAnimal = AnimalFactory.createAnimal("Dog");  // 通过工厂获取Animal对象myAnimal.makeSound();                                 // 调用方法}
}

原因4: 限制对子类特定方法的访问

     Animal myAnimal = new Dog();  // 父类引用指向Dog对象myAnimal.eat();  // 可以调用// myAnimal.bark();  // 编译错误,Animal类没有bark()方法

通过父类引用,你只能访问父类中定义的方法和属性,而不能访问子类特有的方法(如 bark())。
这样可以更好地控制对象的访问权限。

http://www.dtcms.com/a/478715.html

相关文章:

  • 小白如何建网站wordpress gstatic
  • 关于JMM
  • 嵌入式学习笔记- 单片机的低功耗以及唤醒
  • Dify从入门到精通 第12天 RAG知识库概念引入:深入理解知识库、分词与向量化
  • C语言项目:文本统计程序
  • 龙游县建设局网站晋州建设规划局网站
  • Java-Spring入门指南(二十四)SSM整合HTML:解决CSS/JS静态资源被过滤问题
  • 安阳做网站多少钱邢台最新通告今天
  • 如何做高并发网站的架构设计地方型旅游网站
  • 网站文章伪原创怎么做网站建设策划基本流程图
  • 条件概率、全概率、贝叶斯
  • 用mvc做网站报告自己的电脑做服务器搭建网站
  • 更换网站模板html所有标签大全
  • 软件模拟存储,SCSI映射StarWind5.4 企业版
  • DFS和BFS算法和回溯算法
  • c++ 标准模板库练习
  • 购物网站建设费用wordpress调用python脚本
  • 基于深度学习的数字图像分类实验与分析
  • 图像视觉——颜色识别
  • 扬州网站建设哪家公司好电商运营适合女生吗
  • HTML应用指南:利用POST请求获取全国兴业银行网点位置信息
  • Excel处理控件Aspose.Cells教程:使用 Python 将 HTML 转换为 Excel
  • 菏泽做网站的公司可玩儿小程序可以加盟么
  • 阿里云发布《AI 原生应用架构白皮书》
  • 如何在百度上注册自己的网站做网站运营有提成吗
  • 分布式数据库架构:从分库分表到NewSQL实战
  • Java的双重检查锁机制(DCL)与懒加载的单例模式
  • Qt代码-QVector向量数组的增删改查插入统计复制
  • 深圳建设门户网站博客wordpress
  • 免费做网站的好不好大理悦花轩客栈在哪些网站做推广