多态

16、Java中实现多态的机制是什么?

喜你入骨 提交于 2019-12-01 11:54:50
Java实现多态有三个必要条件:继承、重写、向上转型。 静态的多态:方法名相同,参数个数或类型不相同。(overloading) 动态的多态: 子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法 实现接口的实例传与接口的引用调用的实现类的方法。 来源: https://www.cnblogs.com/helenwq/p/11679952.html

深入理解面向过程与面向对象的思想差异与各自特色

瘦欲@ 提交于 2019-12-01 10:58:21
一、什么是面向过程 面向过程是一种思维方式。当试图通过面向过程解决问题时,我们的关注点在于问题解决的流程,重在这个过程的控制,需要用大量的模块(模块化的思想源自于硬件,在C语言中是函数)将大问题拆解,程序员通过控制模块的执行顺序以解决问题。 举个例子,当我们解决一个“如何将大象装入冰箱?”的问题时,最简单的解决思路是面向过程解决: 1、关注过程,将大问题拆解为小问题,实现每个小问题的解决方法 a、打开冰箱门 b、将大象装入冰箱 c、关闭冰箱门 2、通过控制代码,控制模块执行,执行顺序为a->b->c,问题解决。 在日常生活或者说日常编程中,简单的问题用面向过程的思路解决,更加直接有效,但是当问题的规模稍大时,如要描述三万个人吃饭的问题,或者要构建一个航空母舰模型的时候,用面向过程的思想是远远不够的。而且面向过程程序的代码复用性、可扩展性、可移植性、灵活性、健壮性都会在处理大规模问题中出现问题。 二、什么是对象?什么是面向对象的思想?有什么好处? 1、对象与类 万事万物都是对象,对象是自然界的任一个体,比如一本书、一支笔,一片叶子等,而对象和对象间是有相似之处的,比如书(每本书都是一个对象)都是由纸做成的,都印着内容(性质上的相似点),都是用来看的(行为上的相似点),将这些相似之处抽象出来就是类(抽象这个词很难懂,那么说成是分类、提取出事物的共同要素更易理解),类的实例就是对象。 2

作业六

有些话、适合烂在心里 提交于 2019-12-01 10:36:10
20182302 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结 教材学习内容总结 SOLID原则:SRP单一职责原则,OCP开放封闭原则,LSP likov替代原则,ISP接口分离原则,DIP依赖导致原则。(仍未完全理解掌握) 继承封装多态的相关含义。 如何通过接口实现多态,如何利用继承实现多态(实际操作不能完全自己打出)后绑定相关概念 教材学习中的问题和解决过程 问题1: 对四种输出方法无法分离 问题1解决方案:通过仔细阅读理解老师所给代码为两种输入,其下又各有两种shuc 问题2:对字符流,字节流理解存在困难 问题2解决方案:通过交流询问和查阅课本找到相关概念区别。:字符流使用了缓冲区,而字节流没有使用缓冲区。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类)。 代码调试中的问题和解决过程 问题1:try-catch不理解如何使用 问题1解决方案:查阅后得知try与catch的不同作用。 问题2: 在java中输入字符遇到吃回车问题 问题2解决方案:百度后得知通过将nextline改为next可以解决,nextline常发生吃回车问题 问题3:append的作用不知. 问题3解决方案

第六周学习总结

我怕爱的太早我们不能终老 提交于 2019-12-01 10:32:05
目录 20182319 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 上周考试错题总结 结对及互评 评分: 点评过的同学博客和代码 学习进度条 代码托管: 20182319 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结 @ 教材学习内容总结   这周我们学习了两章,一章为多态,一章为异常,其中以多态为主。   首先是多态,我们都知道,java的三个要素封装、接口、多态中就有多态的一席之地,由此也可以看出多态的重要性。对于多态,我们可能会类比到c语言中的指针,两者好像都是用一个东西在不同时刻指向某些不同的类型。其中,多态可以利用继承和和接口两种方式共同实现。父类可以直接指向子类,但若是想调用一些自己没有的方法则是得先进行一波强转。   然后是异常,它说的是我们在平常编码的过程中也会遇到的一些报错下面就会有的那些错误提醒中的东西的一部分。它可以让我们知道我们到底错在哪,也可以在运行的过程中检测一些我们的错误,同时它也可以检测一些非法操作,增强程序的安全性和完备性。 教材学习中的问题和解决过程 问题1:我们在上课的时候曾经做过一个实验,就是对于多态,是否可以进行兄弟和父子之间的运用? 问题1解决方案: 我们在实验中发现对于父子是完全不可行的,而对于父子间的转换

20182323 《程序设计与设计结构》 第六周学习总结

房东的猫 提交于 2019-12-01 10:26:03
目录 学号20182323 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 点评模板: 点评过的同学博客和代码 学习进度条 参考资料 目录 学号20182323 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结 教材学习内容总结 第9章 关键概念 多态引用在不同的时候可以指向不同类型的对象 多态引用在运行时才将方法调用与它的定义绑定在一起 引用变量可以指向声明继承于它的任意类的任何对象 对象的类型,而不是引用的类型,决定调用的是方法的哪个版本 接口是一组抽象方法,所以不能被实例化 继承可适用于接口,所以一个接口可派生于另一个接口 接口引用可以指向实现这个接口的任意类的任何对象 方法的参数可以是多态的,这样使方法具备了对其参数进行控制的灵活性 在侦听器和所侦听组件之间建立关系是通过多态完成的 重点总结 当一个类给出了接口中定义的每个抽象方法的实现是,就称类实现了接口 如果接口中的某个方法没在类中实现,则编译错误 接口只保证类实现了某些方法,但它不限制类可以有其他的行为 多个类可以实现同一个接口,并在类中提供它们各自对方法的定义 接口中还可以包含常量,这些常量用final修饰符来定义 子接口继承父接口中的所有抽象方法和常量

20182301 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

﹥>﹥吖頭↗ 提交于 2019-12-01 10:25:09
20182301 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结 教材学习内容总结 异常处理: 错误和异常代表不常见的或不正确处理的对象 三张方式: 不处理异常 在异常发生的地方处理 在程序的其他地方处理异常 不捕获异常 抛出异常时输出的消息提供了方法调用栈的轨迹 getMessage方法返回一个字符串说明原因 printStackTrace方法输出调用栈跟踪信息 try-catch语句 接在try块后的catch子句定义如何处理一种具体异常,一个try可以对多个touch finally无论如何都要执行 try{ hanshuti} catch(){ } finally } 异常传播:如果没有在异常发生处捕获并及时处理它,这个异常将被传播给调用的方法,程序员必须找到最合适的层处理异常 异常类的层次 Error类和Exception类的共同父类是Throwable类。 必检异常和免检异常 方法头中的throws子句必须包含本方法中没有捕获及处理的必检异常 免检异常:RuntimeExeption或后类对象 I/O异常(输入/输出) 流是字节的顺序序列,它可以用作输入源或是输出的目的地。 System三个共有的引用变量表示标准I/O流 后绑定 多态引用在不同的时候可以指向不同类型的对象 多态引用在运行时才将方法调用与他的定义绑定在一起 通过继承实现多态

20182308 2019-2020-1 《程序设计与数据结构》第6周学习总结

巧了我就是萌 提交于 2019-12-01 10:22:51
学号 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结 教材学习内容总结 将此二章的内容与前面的继承内容相结合,更加深入了解了接口作为一种特殊的继承方法的作用。 接口是抽象方法,不能拿来实例化,不过可以拿去声明对象并引用变量。 继承也同样适用于接口,所以接口也同样可以衍生出新的接口。 教材学习中的问题和解决过程 问题1:什么是多态,它和继承有什么关系,多态是怎么靠接口来实现的? 问题1解决方案:根据课本第246页的说法,多态引用就是说一个在不同时刻可以指向不同类型对象的引用变量。而多态引用常用的两种办法就是继承或接口。接口通过创建抽象变量,在别的类中implement这些抽象类,使得这些没有被实例化、也不能被实例化的类用以引用类中,进行实例化。 问题2:第十章中的异常讲述的目的是什么,什么叫捕获异常,捕获异常在运行中的意义是什么? 问题2解决方案:这一章的主要内容并不是介绍各种类型的错误,而是说如何去解决程序中的错误;不是在编辑代码的时候去解决错误,而是在代码运行的时候让程序去自己消化错误。同时借着这一章的内容,我们花了不少的时间消化I/O的内容。 代码调试中的问题和解决过程 问题1:在敲实践代码的时候,出现了write无法把计算结果写入文件的问题,运用其他方法也不行。 问题1解决方案:最终我采取了写入缓冲区的办法,但是根据老师给的那个代码FileTest

20182303 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

若如初见. 提交于 2019-12-01 10:22:14
目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 学习进度条 参考资料 教材学习内容总结 Chapter9 多态 多态性是对象多种表现形式的体现。 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 多态存在的三个必要条件 继承。在多态中必须存在有继承关系的子类和父类。 重写。子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。 向上转型。在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。 绑定 前期绑定:在编译过程中就已经知道这个方法到底是哪个类中的方法,此时由编译器或其它连接程序实现。java当中的方法只有 final , static , private 和构造方法是前期绑定。 后期绑定是在运行时根据具体对象的类型进行绑定。 接口 目的 语法 创建多态引用 使用继承机制 基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。 使用接口 通过实现接口并覆盖接口中同一方法的不同类体现多态。 Chapter10 Error 用于指示合理的应用程序不应该试图捕获的严重问题。 大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是

20182320 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

柔情痞子 提交于 2019-12-01 10:21:54
20182320《程序设计与设计结构》第六周学习总结 教材学习内容总结 1. 第九章 1.1 后绑定 首先,我们调用一个类的方法,需要经历下面几个步骤: (1)创建引用对象,例如 Scanner scan; (2)将引用对象指向一个对象 通常是如下指向引用时声明的类 scan = new Scanner("abc"); 但是 多态引用 如果通过继承实现多态可以指向声明类的子类,假设Scanner有个子类Scn Scn scn = new Scn(); scan = scn; 可简写成 scan = new Scn(); (3)调用类的方法 int x = scan.nextInt(); 绑定 指的是将方法的调用与方法的定义绑起来,即(2)和(3)绑起来。 普通的方法调用和定义可以再编译时完成,但是多态引用的要到运行时才能完成,这个延时的提交被称为 后绑定或动态绑定 。 1.2 通过继承实现多态 根据上面的(2)举的例子和第八章学习的继承,我们可以用下面这个例子进行说明如何用继承实现多态。 这里有一个类Mammal,他有个子类Horse Mammal pet;//先创建Mammal的引用变量 Horse a = new Horse();//创建Horse的对象 pet = a;//pet指向Horse的对象 这就是多态的实现了,虽然pet声明是一个Mammal变量

20182328 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结

夙愿已清 提交于 2019-12-01 10:17:39
20182328 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结 教材学习内容总结 第九章 多态:1、多态后邦定 2、如何通过继承实现多态 3、接口的相关延伸: (1)接口层次 (2)Comparable接口 (3)lterator接口 4、如何使用通过接口来实现多态 第十章 异常:1、异常处理 2、不捕获异常 3、try-catch语句 4、异常传播异常类的层次 5、I/O异常 教材学习中的问题和解决过程 问题1:Staff类中的staffList数组仅仅保存是保存StaffMember引用吗? 问题1解决方案:staffList实际上保存的是其他类创建的对象,总之staffList数组保存的是多态引用。 问题2:类层次和接口层次到底有什么联系? 问题2解决方案:类层次和接口层次并不重叠类不能派生接口,接口也不能派生类,只有编出一个具体接口的类时,类和接口才有交互。 代码调试中的问题和解决过程 问题1:提示说在Firm文件中未声明公共Firm类 问题1解决方案:使类Firm转化为不公开 问题2:提示需要interface 问题2解决方案:interface是面向对象编程语言中接口操作的关键字,所以解决方法是先创建一个接口 问题3:类PassWordTest在java文件未声明 问题3解决方案:文件名和类名起冲突,大小写不匹配 代码托管 (statistics