如何应对继承的双面性

news2025/1/13 10:43:05

如何应对继承的双面性

继承既强大又有破坏性,那怎么办呢?

1)避免使用继承;
2)正确使用继承。

我们先来看怎么避免继承,有三种方法:
·使用final关键字;
·优先使用组合而非继承;
·使用接口。

1.使用final避免继承

2.优先使用组合而非继承
使用组合可以抵挡父类变化对子类的影响,从而保护子类,应该优先使用组合。
 还是上面的例子,我们使用组合来重写一下子类,如代码清单所示。
代码清单4-12 使用组合实现子类Child
public class Child {
    private Base base;
    private long sum;
    public Child(){
        base = new Base();
    }
    public void add(int number) {
        base.add(number);
        sum+=number;
    }
    public void addAll(int[] numbers) {
        base.addAll(numbers);
        for(int i=0;i<numbers.length;i++){
            sum+=numbers[i];
        }
    }
    public long getSum() {
        return sum;
    }
}
这样,子类就不需要关注基类是如何实现的了,基类修改实现细节,增加公开方法,也不会影响到子类了。但组合的问题是,子类对象不能当作基类对象来统一处理了。解决方法是使用接口
 。接口是什么呢?我们留待下章介绍。

3.正确使用继承
如果要使用继承,怎么正确使用呢?使用继承大概主要有三种场景:

1)基类是别人写的,我们写子类;
2)我们写基类,别人可能写子类;
3)基类、子类都是我们写的。

https://www.bilibili.com/video/BV1Yv4y1d7zk/?spm_id_from=333.999.0.0icon-default.png?t=M85Bhttps://www.bilibili.com/video/BV1Yv4y1d7zk/?spm_id_from=333.999.0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11月30日:linux服务器安装以及部署项目

准备一个连接linux服务器的可视化工具&#xff0c;开始发车 推荐使用国产&#xff1a; finalshell 下载地址&#xff1a;FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本3.9.7,更新时间2022.10.26 - SSH工具 SSH客户端 xshell&#xff1a;安装…

Spring Cloud Gateway微服务网关快速入门

介绍 Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等技术开发的网关&#xff0c;Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态…

Kamiya丨Kamiya艾美捷人乳铁蛋白ELISA说明书

Kamiya艾美捷人乳铁蛋白ELISA预期用途&#xff1a; 人乳铁蛋白ELISA是一种高度灵敏的双位点酶联免疫测定&#xff08;ELISA&#xff09;人类生物样品中乳铁蛋白的测定。仅供研究使用。不用于诊断程序。 引言 乳铁蛋白&#xff08;LF&#xff09;是一种具有抗菌活性的多功能铁…

运动“双十一”持续走热,缤跃酒店洞察市场需求,创新打造运动健康酒店!

2022年“双十一”购物促销活动刚刚结束&#xff0c;各大品牌陆续开始展示肌肉&#xff0c;在众多数据中运动健身领域相关数据不容忽视&#xff0c;居家健身器械等商品持续走热&#xff0c;户外运动设备销售量也保持热度。由此可见&#xff0c;在当下全民运动热潮下&#xff0c;…

uniapp开发微信小程序实现语音识别,使用微信同声传译插件,

第一步&#xff1a;在微信小程序管理后台&#xff1a;“设置”-》“第三方设置”-》“插件管理”中添加插件。 但是这个地方&#xff0c;没有搜索到插件&#xff0c;就到微信服务市场 搜索到以后添加到需要的小程序里面&#xff0c;然后返回管理中心查看&#xff0c;就可以看…

Css3 3D转换

特点&#xff1a; 近大远小物体后面遮挡不可见 三维坐标系&#xff1a; 三维坐标系其实就是指立体空间&#xff0c;立体空间是由3个轴共同组成的。 X轴&#xff1a;水平向右为正 Y轴&#xff1a;垂直向下为正 Z轴&#xff1a;垂直屏幕向外为正 3D位移和3D旋转&#xff1a…

曲柄压力机的离合器和制动系统设计

目 录 摘 要 I ABSTRACT II 第1章 绪论 1 1.1压力机发展的概况 1 1.2压力机工作原理 1 1.2.1压力机功能简介 1 1.2.2压力机的工作原理简介 3 1.3 压力机的分类 3 1.4 压力机的主要参数和型号 4 1.5本次设计压力机参数及内容 6 1.5.1主要技术参数 6 1.5.2设计内容 6 第二章 曲柄…

学妹居然叫我帮她P证件照自拍,结果发现.........

前因后果 事情是这样的 晚上我正在聚精会神写代码&#xff08;打游戏~&#xff09; 突然&#xff0c;收到学妹给我发来的消息 还有一张自拍照 而且是可以放在结婚证上的那种哦 原来是照片尺寸不合适 让我帮她修图。还要什么蓝底、红底各种背景的 效果 1、尺寸长宽调整为&…

有序数组转换为二叉查找树

问题描述 给定一个整数数组&#xff0c;其元素为先序排列&#xff0c;将其转换为高度平衡的二叉查找树。 示例 示例1 Input: nums [-10,-3,0,5,9] Output: [0,-3,9,-10,null,5] Explanation: [0,-10,5,null,-3,null,9] is also accepted: 示例2 Input: nums [1,3] Output: …

STM32实战总结:HAL之触摸屏

输入类设备简介 IO输入输出&#xff0c;是计算机系统中的一个概念。计算机的主要功能就是从外部获取数据然后进行计算加工得到目标数据并输出给外部&#xff08;计算机可以看成数据处理器&#xff09;。计算机和外部交互就是通过IO。每一台计算机都有个标准输入和标准输出。 常…

业务:财务会计业务知识

一、引言 会计是以货币为主要计量单位&#xff0c;对企业、事业、机关、团体及其他经济组织的经济活动进行记录、计算、控制、分析、报告&#xff0c;以提供财务和管理信息的工作。会计的职能主要是反映和控制经济活动过程&#xff0c;保证会计信息的合法、真实、准确和完整&a…

像素坐标和实际坐标的转换

文章目录像素坐标系图像坐标系小孔成像原理相机坐标系畸变参数像素坐标系 像素坐标系uov是一个二维直角坐标系&#xff0c;反映了相机CCD/CMOS芯片中像素的排列情况。原点o位于图像的左上角&#xff0c;u轴、v轴分别于像面的两边平行。像素坐标系中坐标轴的单位是像素&#xf…

新手python的自学总结(已拿到百度offer)

今天给大家分享一个小伙伴自学Python找到工作的文章。 先简单介绍一下小伙伴的情况。是非科班出身的&#xff0c;虽然高中读的是理科&#xff0c;但是进入大学学了一个文科专业&#xff0c;之后就再没接触过理工科的东西。对计算机也是一窍不通&#xff0c;大学才刚开始接触电…

Linux源码——启动流程1

主要 大概流程就是&#xff1a; 通电自检-----》bios----》bootloader —》内核。其中内核这部分是这篇主要的&#xff0c;通过bootloader初始化好一些条件&#xff0c;然后调用kernel_entry()开始正式进入内核之中&#xff0c;后面就是内核操作了&#xff0c;启动进程什么的…

Java知识点

Java浅拷贝 Java的深拷贝和浅拷贝 - YSOcean - 博客园 (cnblogs.com) Clone 是 Object 类中的一个方法&#xff0c;通过对象A.clone() 方法会创建一个内容和对象 A 一模一样的对象 B&#xff0c;clone 克隆&#xff0c;顾名思义就是创建一个一模一样的对象出来&#xff08;浅…

如何确保海外服务器的高可用性?

服务器正常运行时间和站点可用性是每个企业的首要任务。但对于那些通过在线业务盈利的公司来说&#xff0c;确保可靠性是最重要的。然而&#xff0c;任何意外停机都是有代价的&#xff0c;而硬件故障是最常见的原因。不过好在这也是可以预防的。那么&#xff0c;如何确保海外服…

怎样把网页上的音频转换成mp3格式?试试这几个转换方法

大家平时喜欢听音乐吗&#xff1f;我经常会在网上保存一些不错的音频到设备上&#xff0c;这样子就方便我可以随时播放了。那你们有遇到过该音频格式不支持播放的情况吗&#xff1f;这种情况是因为播放器兼容的音频格式比较少&#xff0c;需要我们将音频格式转换成播放器兼容的…

如何发现Python依赖库漏洞

因为python编程的流行&#xff0c;python的各种库也越来越多&#xff0c;但许多小伙伴可能只注意到了自己编程所要依赖的环境&#xff0c;但是却忽略了库的版本也有可能存在漏洞的风险&#xff0c;如果不及时检查和更新python依赖库&#xff0c;那么很有可能你写的代码本身就存…

[附源码]SSM计算机毕业设计医院药房管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

《500强高管谈VE》-以VE ORIENTED管理为目标

文章出处&#xff1a;日本VE协会杂志文章翻译&#xff1a;泰泽项目部 关注泰泽&#xff1a;实现高利润企业《500强高管谈VE》-以VE ORIENTED管理为目标 作者&#xff1a;代表董事兼副社长近藤一 以阪神大地震为首的诸多事件等&#xff0c;社会动荡中&#xff0c;经济的动向也以…