面向对象(多态)-第一阶段-第九天-2021-07-23

2024-02-25 18:08

本文主要是介绍面向对象(多态)-第一阶段-第九天-2021-07-23,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

多态2

一.类和类之间的依赖关系

依赖是类和类之间的一种非常常见的关系
比如:程序员 依赖 电脑 人 依赖 交通工具
但是有些依赖关系容易混淆,比如是遥控器依赖电器不是电器依赖遥控器
因为遥控器离开了电器,那么它的存在就没有意义
但是电器一旦打开,即使不依赖遥控器它也能正常工作,比较电器的共工作是通过其本身的线路和工作器件完成,而不是遥控器。

存在强依赖关系和弱依赖关系,通过实例来说明
比如:
出租车司机对车就是一个强依赖的关系(出租车司机的很多行为都是离不开车的存在,所以是强依赖关系)强依赖关系一般在类中用成员来引用
学生对车就是一个弱依赖的关系(学生只是在需要的时候偶尔用一下车而已就是弱依赖关系)弱依赖关系一般在类中只需要在行为(方法)的形参里面引用

//针对依赖关系比较弱的时候
public class Student {//旅行 public void goHome(Car car) {		car.run();System.out.println("回老家用车。。。");		}
}
//针对依赖程度比较强的情况
public class TaxiDriver {private Car car;public TaxiDriver (Car car) {this.car=car;}public TaxiDriver () {}//旅行public void travel() {		car.run();System.out.println("出租车司机在旅行...");		}//工作public void work() {car.run();System.out.println("在工作载客...");}}

对象之间存在联系(依赖关系),从一个好的软件设计的角度来说,我们希望这种依赖关系不要过于紧密(耦合过高),理想情况我们希望这种耦合变成0 ,问题发生的原因:因为车(被依赖方)的变化造成人(依赖方)也发生巨大的变化,严重违背了软件设计的开闭原则

小技巧:在子类重写的方法的上面加上一个注解:@override,作用是在编译期起到一个语法检查的作用,也可以使用开发工具中提供的快捷键进行操作

@Override
public void run1() {System.out.println("轿车在路上跑....");
}

解耦的原则:依赖倒置 我们不要直接去依赖具体,尽量去依赖抽象,因为抽象的东西比具体的东西更加稳定,我们依赖的一方稳定了我们自身才能变得更加稳定

二.abstract关键字的使用

如果一个方法无法实现,可以将这个方法定义为抽象方法,在方法声明时使用abstract关键字对该方法进行修饰

抽象方法才能没有方法体

抽象方法必须定义在抽象类中,抽象方法不能有方法体

public abstract void run() ;

子类继承了一个抽象的父类,必须对父类中定义的抽象方法进行强制实现,除非这个子类自己本身也是抽象的

public class Ship extends Vehicle{@Overridepublic void run() {System.out.println("船在水中游...");}
}
//子类自己也是抽象的
public abstract class FlyableVehicle  extends Vehicle{}

抽象类无法实例化对象

Vehicle vehicle=new Vehicle();//报错
抽象的概念在实际生活中根本就没有对应对象

抽象方法必须位于抽象类,但是抽象类中可以存在非抽象的方法

问题:抽象的父类中针对具体的某个方法是设计成抽象的还是具体的?

所有员工都有一个共同的行为:上班打卡 ,打卡的方法应该定义父类Employee中,问题:打卡是设计为抽象方法还是具体的方法?

  • 三种员工:打卡的时间各不相同 8 :00 9:00 10:10
  • 五种员工:4种都是9点 只有1种员工12点打卡

父类中普通的方法作为子类来说有选择性的去重写,父类中抽象方法要求所有的子类必须强制重写

这篇关于面向对象(多态)-第一阶段-第九天-2021-07-23的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746273

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

多态的分类

多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。 1,通用的多态又分为参数多态(parametric)和包含多态(inclusion); (1)参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。 例如:泛型   (2)包含多

人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展|顶刊速递·24-06-23

小罗碎碎念 本期推文主题:人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展 这一期的推文是我发自内心觉得为数不多,特别宝贵的一篇推文,原因很简单——可参考的文献相对较少&方向非常具有研究意义&现在不卷。 数字病理方向的老师/同学应该清楚,不同中心提供的切片,染色方案是存在差异的,并且还存在各种质量问题,所以我们在数据预处理的时候,通常会先对切片的质量执行一遍筛选,然后再进行染

23.并发

目录 一、一些概念二、进程和线程2.1 概念2.2 多线程导致的问题2.3 使用spawn创建新线程2.4 线程与move闭包 三、消息传递3.1 概念3.2 创建通道3.3 示例3.4 其它测试 四、共享状态并发4.1 互斥器4.2 Mutex的API4.3 多线程共享Mutex1)在多线程之间共享值;2)多线程和多所有权3) 原子引用计数4)RefCell/Rc与 Mutex/Arc的相

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》   《文稿拾零》超厚的一本书(570+),看得时间比较长,这本书是作者零散时间写的一些关于文学性质的笔记,读起来还是比较无趣的,非常零散,虽然有很多有趣的观点,但连不起来,不像毛姆的读书笔记,简单记录一下了。 阅读笔记记录 P3 桑德堡身上有一种疲倦的忧伤,一种平原傍晚时的忧伤,泥沙浊流的忧伤,无用却又精确回忆的忧伤,一个

2021-02-16物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA,金蝶仓库条码管理WMS系统

物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA https://member.bilibili.com/platform/upload-manager/article 本期视频我们来讲解一下汉点机PDA条码添加和条码标签蓝牙便携打印: 在实际使用中,我们商品有两种情况: 一种是商品本身就有条码, 比如:超市卖的可口可乐,牛奶等商品,商品本身就有69开头的国标码,那么我们就可以使用盘点

编程精粹—— Microsoft 编写优质无错 C 程序秘诀 07:编码中的假象

这是一本老书,作者 Steve Maguire 在微软工作期间写了这本书,英文版于 1993 年发布。2013 年推出了 20 周年纪念第二版。我们看到的标题是中译版名字,英文版的名字是《Writing Clean Code ─── Microsoft’s Techniques for Developing》,这本书主要讨论如何编写健壮、高质量的代码。作者在书中分享了许多实际编程的技巧和经验,旨在

剑指offer66题(Python)——第九天

49、n个骰子的点数 扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。 给定 n = 1,返回 [ [1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]。 方法一:递归 【思路】设n个骰子某次投掷点数和为s的出现次数是F(n, s),那么,F(n, s)等

java面向对象(4)

目录 1.多态 1.1如何构成多态 1.2多态的调用规则 1.3多态的向下转型 1.4 instanceof运算符 1.5多态的好处 2.final关键字 3.接口 3.1接口中可以定义哪些成员 3.2接口的使用 3.2接口的特性 1.多态 多态:同一种事物,在不同的时刻表现出不同的状态 1.1如何构成多态 当两个类有直接或间接的继承关系并且父类的引用

LeetCode 每日一题 2024/6/17-2024/6/23

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/17 522. 最长特殊序列 II6/18 2288. 价格减免6/19 2713. 矩阵中严格递增的单元格数6/20 2748. 美丽下标对的数目6/21 LCP 61. 气温变化趋势6/22 2663. 字典序最小的美丽字符串6/23 520. 检测大写字母 6/1