第二讲__提炼

1.多态

        1.定义

                常见的两种情况:

                1.继承

                        一个类A里面定义了一些方法,另一个类B继承了这个类并重写了A类的部分方法,主函数中用A类(父类)接收了一个B类(子类)对象,此时即时多态。

                2.接口

                        一个接口A里面定义类很多抽象方法,有一个类B实现了这个接口A,那么类B就需要重写接口A里面所有的抽象方法,当类B同时实现了其他接口C、接口D....时,这样这个类B就拥有了多个接口的行为,此时也是一种多态

        2.前提

                1.有继承或实现的关系
                2.存在父类引用指向子类
                3.存在方法的重写(继承)或实现(接口)

        3.好处

                定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利

        4.弊端

                多态情况下即当:父类 变量 = new 子类(); 时变量可以调用子类重写的父类的方法但是不能调用子类本身独有的方法。

        5.类型转换

                当 4.弊端 情况出现时,可以进行类型的强制转换以实现调用子类独有的方法。
                引用类型中需要使用instanceof关键字进行判断是否为该类型,若转换。

2.final

        final关键字可以修饰:类、方法、变量

        final修饰类时:该类不可再被继承
        final修饰方法时:该方法不可再被重写
        final修饰变量时:该变量不可再被赋值

3.抽象类

        1.定义

                用abstract修饰的抽象类
                用abstract修饰的方法抽象方法

        2.注意事项

                抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类,抽象类中也有非抽象方法。
                抽象类不能创建对象,仅能作为一种特殊的父类,被子类继承并实现。
                一个类继承了抽象类那么这个类就必须重写完该抽象类中所有的抽象方法,否则该类会被定义为抽象类。

        3.模版方法设计模式

        设计模式就是针对某类问题,前人总结出来的解决这类问题的套路,
        模板设计模式的作用是代码复用,把同一类问题常见的需要用的方法进行封装,将角色不同的功能部分定义成抽象方法,由子类继承这个模版并对其中的抽象方法进行重写,
        使用步骤:定义一个抽象类,把子类中相同的代码写成一个模版方法,也就是上面说的同一类问题常见的需要用的方法进行封装,把模块方法中不能确定的代码写成抽象方法,也就是上面所说的将角色不同的功能部分定义成抽象方法,并在模版方法中调用这些抽象方法,最后由子类继承抽象类,只需要重写父类的抽象方法就可以了,也就是上面说的由子类继承这个模版,并对其中的抽象方法进行重写。

4.接口

        1.定义

                1.定义接口

interface 方法名{抽象方法...非抽象方法...
}

                2.实现接口

public class 实现类 implements 接口名{@Overridepublic void 抽象方法() {//重写抽象方法}@Override.....

        2.注意

                1.接口不能创建对象,接口是用来被实现的,一个类可以实现很多个接
                   补充:
                        1.一个类实现很多类的时候,这个类便拥有了很多接口行为,可以看做多态的一种形式。
                        2.一个类只能继承一个父类,但是一个类可以实现多个接口;一个接口可以继承多个接口。
                2.接口的实现类需要实现接口里面的全部抽象方法,按需使用非抽象方法。若没有实现全部抽象方法,则该类会被定义为抽象类。

        3.好处

                1.面向接口编程
                2.解耦合

        4.JDK8新增的三种方法

                1.默认方法:default
                2.私有方法:private
                3.静态方法:static

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

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

相关文章

从零开始学习Spring Cloud Consul:服务治理的完整解决方案

从零开始学习Spring Cloud Consul:服务治理的完整解决方案 在微服务架构中,服务的注册与发现、配置管理、负载均衡、健康检查等服务治理功能是保障系统稳定性和可扩展性的关键。Spring Cloud Consul作为Spring Cloud生态系统中与Consul集成的模块&#…

.NET HandyControl 深度解析:一个现代化的UI控件库

文章目录 前言一、选择HandyControl的原因二、如何使用HandyControl1.安装HandyControl2.使用代码例子 总结 前言 在.NET开发领域,UI(用户界面)设计的美观性和易用性对于应用程序的成功至关重要。为了帮助开发者快速构建现代化、美观且用户友…

如何使用住宅代理获取价格对比和更多选择

在购物和预订过程中,网站通常会根据用户的地理位置提供不同的价格和库存信息。这种做法称为地理定价或区域定价。使用静态住宅代理可以帮助用户准确查看他们想要了解的区域,获得更多选择和更优惠的价格。 查找更低的价格: 价格差异&#xff1…

CSS\JS实现页面背景气泡logo上浮效果

效果图&#xff1a; 单容器显示气泡&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Bu…

c++习题27-大整数减法

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 输入 共2行&#xff0c;第1行是被减数a&#xff0c;第2行是减数b(a > b)。每个大整数不超过200位&#xff0c;不会有多余的前导零。 输出 一行&#xff0c;即所求的差。 样例输入1…

PostgreSQL遍历所有的表并为其创建基于某个字段的索引

完整代码 以下以"collect_time"字段为例&#xff0c;其他字段请自行全局替换 DO $$ DECLAREtable_name TEXT;index_name TEXT; BEGIN-- 遍历 public 模式下的所有表FOR table_name IN (SELECT table_nameFROM information_schema.tablesWHERE table_schema publicOR…

精密机械零件加工企业为制造业提供关键支撑

在当今高度发达的制造业中&#xff0c;精密机械零件加工企业扮演着至关重要的角色&#xff0c;以其精湛的工艺和严谨的态度&#xff0c;为制造业的各个领域提供着关键的支撑。 一、高精度制造&#xff0c;奠定产品质量基础 精密机械零件加工企业以其精湛的加工技术&#xff0c;…

android studio 设置gradle jdk

1. 左上角点击file 2. 按照如下点击&#xff1a; 3. 即可修改gradle jdk

灵办AI搜索引擎和文档总结工具

前言—— 在信息爆炸的时代&#xff0c;如何高效地获取和处理知识成为了每个人面临的挑战。随着人工智能技术的迅猛发展&#xff0c;本文将深入探讨这一创新工具的功能与优势&#xff0c;以及如何在日常生活和工作中充分利用它&#xff0c;开启智能化的信息获取新篇章。 点击…

nexus 清理 docker 镜像

下载配置 nexus-cli 看网上文档都用如下地址&#xff0c;但现在已经不能下载&#xff1a; wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli chmod x nexus-cli 在 github 上下载&#xff1a; wget https://github.com/heyonggs/nexus-cli/r…

【DSP+FPGA】基于DSP+FPGA XC7K325T与TMS320C6678的通用信号处理平台

DSP FPGA 协同处理架构板载 1 个TMS320C6678 多核DSP处理节点板载 1 片 XC7K325T FPGA处理节点板载 1 个FMC 接口板载4路SFP光纤接口FPGA 与 DSP 之间采用高速Rapid IO互联 基于FPGA与DSP协同处理架构的通用高性能实时信号处理平台&#xff0c;该平台采用1片TI的KeyStone系列多…

H5手机端调起支付宝app支付

1.调起APP页面如下 步骤 1.让后端对接一下以下文档&#xff08;手机网站支付通过alipays协议唤起支付宝APP&#xff09; https://opendocs.alipay.com/open/203/107091?pathHash45006f4f&refapi 2.后端接口会返回一个form提交表单 html&#xff1a;在页面中定义一个d…

Python从入门到进阶教程文章分享汇总~持续更新

目录 一、Python语言基础1.1 基础语法1.2 练习1.2.1 选择题1.2.2 编程题 二、web方向2.1 flask2.2 django2.3 fastapi 三、爬虫方向3.1 爬虫基础3.2 Scrapy框架3.3 反爬3.5 爬虫架构3.6 案例 四、数据分析和ai4.1 数据分析4.2 AI 五、Python常用模块&#xff0c;内置函数与方法…

2024年程序员金九银十面试宝典持续更新中.....

大家好&#xff0c;我是一位老程序员&#xff0c;很久没有更新了&#xff0c;今年大家都很不容易&#xff0c;这里有一份多年来整理的一份Java&#xff0c;大模型&#xff0c;项目管理&#xff0c;Mac软件等各类学习资料及面试题&#xff0c;无论你刚入行的程序员&#xff0c;还…

安全运维--Linux常用命令

运维工程师之Linux常用命令 Linux是一个强大的操作系统&#xff0c;它提供了许多常用的命令行工具&#xff0c;可以帮助我们用于管理文件、目录、进程、网络和系统配置等。以下是一些常用的Linux命令&#xff1a; 一、获得命令帮助&#xff1a; 1、查看Shell内部命令pwd的帮…

C++_CH17_枚举

C_CH17_枚举 1.1 定义 枚举(ENUM),是enumeration的缩写。是为了让一组数值集合成为一种类型。 1.2一个例子 #include <iostream>enum Example {A,B,C;//说明你想让哪些数成为组合&#xff0c;默认第一个为0&#xff0c;之后每一个加1 };int a 0; int b 1; int c 2…

Linux的远程登录教程(超详细)

我们在进行远程登录时要用的一种协议叫SSH&#xff0c;那什么叫SSH呢&#xff1f; SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0c;用于在不安全的网络中提供安全的远程登录和其他网络服务。它通过加密技术确保数据在传输过程中的机密性和完整性&#xff…

实训第三十二天(学习playbook-roles,脚本创建数据库和表,mycat读写分离)

1、roles&#xff08;角色&#xff09;介绍 roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独 的⽬录中,并可以便捷地调⽤它们的⼀种机制。 假设我们要写⼀个playbook来安装管理lamp环境&#xff0c;那么这个 playbook就会写很⻓。所以我们希望把这个很⼤的…

vite-plugin-svg-icons 用法

vite-plugin-svg-icons 是一个 Vite 插件&#xff0c;用于将本地 SVG 文件转换为可直接在 Vue 组件中使用的图标。这个插件能够自动扫描指定目录下的 SVG 文件&#xff0c;并将其注册为 Vue 组件&#xff0c;从而简化了在 Vue 项目中使用 SVG 图标的过程。 1. 安装插件 首先&…

C++ 图形框架 Duilib

Duilib是一个开源的DirectUI界面库&#xff0c;遵循BSD协议&#xff0c;可以免费用于商业项目。它具有以下特点&#xff1a; 简约易扩展的设计&#xff1a;Duilib遵循简洁、清晰的设计理念&#xff0c;使得用户界面更加直观、易于使用。同时&#xff0c;它也提供了丰富的扩展接…