多态性

习题5

匿名 (未验证) 提交于 2019-12-03 00:33:02
C++的两种联编方式为: 静态 联编和 动态 联编。 C++支持两种多态性,静态联编所支持的多态性被称为 编译时的多态性 、动态联编所支持的多态性被称为 运行时的多态性 。 重载函数在编译时表现出多态性,就是 静态 联编;而虚函数则在运行时表现出多态性是 动态 联编。 为了区分重载函数,把一个派生类中重定义基类的虚函数称为 覆盖 。 如果派生类与基类的虚函数仅仅返回类型不同,其余相同,则C++认为是 使用不恰当的虚函数 。 在构造函数和析构函数中调用虚函数时,采用 静态 联编。 纯虚函数的定义是在虚函数定义的基础上,再让函数等于 0 。 对于包含有纯虚函数的类被称为 抽象类 。 用关键字( A )标记的函数被称为虚函数。 A. virtual B. private C. public D. protected 在C++中,要实现动态联编,必须使用( D )调用虚函数 A. 类名 B. 派生类指针 C. 对象名 D. 基类指针 下列函数中,可以作为虚函数的是( BD )。 A. 普通函数 B. 非静态成员函数 C. 构造函数 D. 析构函数 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( B )。 A. 不同 B. 相同 C. 相容 D. 部分相同 使用虚函数保证了在通过一个基类类型的指针(含引用)调用一个虚函数时,C++系统对该调用进行

面向对象的四大基本特征和五大基本原则

匿名 (未验证) 提交于 2019-12-03 00:22:01
面向对象主要有四大特性 抽象 忽略一个主题中与当前目标无关的东西 , 专注的注意与当前目标有关的方面 .( 就是把现实世界中的某一类东西 , 提取出来 , 用程序代码表示 , 抽象出来的一般叫做类或者接口 ). 抽象并不打算了解全部问题 , 而是选择其中的一部分 , 暂时不用部分细节 . 抽象包括两个方面 , 一个数据抽象 , 而是过程抽象 . 数据抽象 --> 表示世界中一类事物的特征 , 就是对象的属性 . 比如鸟有翅膀 , 羽毛等 ( 类的属性 ) 过程抽象 --> 表示世界中一类事物的行为 , 就是对象的行为 . 比如鸟会飞 , 会叫 ( 类的方法 ) 封装 封装就是把过程和数据包围起来 , 对数据的访问只能通过特定的界面 . 如私有变量 , 用 set,get 方法获取 继承 一种联结类的层次模型 , 并且允许和鼓励类的重用 , 提供一种明确表达共性的方法 . 对象的一个新类可以从现有的类中派生 , 这个过程称为类继承 . 新类继承了原始类的特性 , 新类称为原始类的派生类 ( 子类 ), 原始类称为新类的基类 ( 父类 ). 派生类可以从它的父类哪里继承方法和实例变量 , 并且类可以修改或增加新的方法使之更适合特殊的需要 . 因此可以说 , 继承为了重用父类代码 , 同时为实现多态性作准备 . 多态 多态是指允许不同类的对象对同一消息做出响应 .

c++语法笔记(下)

我的梦境 提交于 2019-12-01 17:21:25
多态性与虚函数 多态性 (函数重载,运算符重载就是多态性现象) 多态性 :向不同对象发送同一个消息,不同对象在接收时会产生不同的行为。(每个对象用自己的方式去响应共同的消息) 多态性又可以分为静态多态性和动态多态性 静态多态性 在编译时编译系统就可以判定调用哪个重载运算符(函数)。 #include<iostream> using namespace std; class point { public: point(float a, float b) { //构造函数 x = a; y = b; } friend ostream & operator <<(ostream &, point &); //运算符重载 protected: float x, y; }; std::ostream &operator<<(std::ostream &output, point &p) { //运算符重载的定义 output << "(" << p.x << "," << p.y << ")" << endl; return output; } class circle :public point { public: circle(float a, float b, float c) :point(a, b), radius(c) {} //构造函数 friend ostream

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

微笑、不失礼 提交于 2019-12-01 10:07:01
20182333 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结 教材学习内容总结 第九章 多态 1.后绑定。效率低于编译阶段的绑定效率。 2.学习练习如何利用继承方式来实现多态性。 3.学习练习如何利用接口来实现多态性。 4.多态性设计(多个不同对象执行相同的基本行为,并且行为的不同实现方式取决于对象的具体类型。) 第十章 异常 1.异常处理(异常抛出的问题和处理异常的方法) 2.未捕获的异常。 3.try-catch语句与finally子句。 4.异常传播。(就与传递性一样,举个例子:程序一存在异常,程序二调用程序一,程序二就会存在与程序一相同的异常。) 5.异常类层次结构。(许多类型的异常类都由Exception类派生,但定义各种异常的子类却分散定义在其他几个包中,继承关系可以跨越包边界。) 6.自定义异常与必检异常与免检异常。 7.初步学习I/O流的部分内容和I/O异常。(三种标准I/O流(in、out、err))可检测的IOExceptions异常 教材学习中的问题和解决过程 问题1:继承如何支持多态 问题1解决方案:在Java中,使用父类声明的引用变量可以指向子类的对象。如何俩个类包含相同签名的方法时,父类引用是多态的。 问题2:类与接口有什么不同 问题2解决方案:类可被实例化,接口不能被实例化。接口可以只包含抽象方法和常量。类提供了接口的实现

面向对象基础

醉酒当歌 提交于 2019-11-30 06:25:44
目录 组合 多态 多态性 好处 封装 两个层面 property 组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象 组合是用来解决类与类之间代码冗余的问题 首先我们先写一个简单版的选课系统 class OldboyPeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class OldboyStudent(OldboyPeople): def __init__(self, name, age, sex, stu_id): OldboyPeople.__init__(self, name, age, sex) self.stu_id = stu_id def choose_course(self): print('%s is choosing course' % self.name) class OldboyTeacher(OldboyPeople): def __init__(self, name, age, sex, level): OldboyPeople.__init__(self, name, age, sex) self.level = level def score(self,

基于基因组测序数据鉴定单碱基变异的方法总结

丶灬走出姿态 提交于 2019-11-30 05:24:36
单核苷酸多态性,英文single nucleotide polymorphism,缩写为SNP,读音为Snip。SNP主要是指在基因组水平上引起的单个碱基的变异,其在群体中的发生频率不小于1%,包括单碱基的转换、颠换以及单碱基的插入和缺失等。 多态性示意图(图片来源:genome news network) 突变(mutation)和多态性(polymorphism)的主要区别在于 : 1) 突变在群体中的发生频率小于1%,而多态性的发生频率在大于1%; 2) 突变通常对生生物体是有害的,而多态性通常都是无害的。 多态性和突变的区别(图片来源:genome news network) 那么基于基因组测序数据,包括全基因组测(WGS)、全外显子测序(WES)或靶向测序(targeted sequencing),鉴定基因组变异的标准流程是什么样的呢?(更多精彩请关注微信公众号:AIPuFuBio) 具体如下图所示: 基因组变异鉴定标准流程(DePristo et al. Nature Genetics, 2011) 所以基于测序数据进行基因组变异检测的第一步就是数据匹配,即把测序数据匹配到参考基因组上。匹配测序数据的软件非常多,下图列举了一些典型的匹配软件。具体如下所示: 常用的测序数据匹配软件比较(Li et al. Cancer Informatics, 2015) 由上表可知

Day25

帅比萌擦擦* 提交于 2019-11-28 19:59:04
类的使用 类的组合 什么是组合: 对象的某个属性是另一个对象 组合的概念 class Foo: def __init__(self,bar): self.bar=bar class Bar: pass # f=Foo() bar=Bar() # f=Foo(Bar()) f=Foo(bar) 为什么要使用组合 组合可以减少代码的冗余 多态和多态性 什么是多态 一类事物的多种形态 什么是多态性 多态性是指在不考虑实例类型的情况下使用实例 好处: ​ 1.增加程序灵活性 ​ 2.增加程序可扩展性 举例: 动物类:猪,狗,人 动物类细分后猪类,人类,狗类后,由于三类中都会有发声这个类,但是叫声由于三个类都各不相同,但是我们可以在动物类中定义一个叫声方法。 一、通过接口来实现统一化,约束代码 #多态基础 class Animal: def speak(self): pass class Pig(Animal): def speak(self): print('哼哼哼') class Dog(Animal): def speak(self): print('汪汪') class People(Animal): def speak(self): print('say hello') pig=Pig() dog=Dog() people=People() # pig.speak() # dog

python-day25(正式学习)

江枫思渺然 提交于 2019-11-28 19:54:30
目录 组合 多态 多态性 好处 封装 两个层面 property 组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象 组合是用来解决类与类之间代码冗余的问题 首先我们先写一个简单版的选课系统 class OldboyPeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class OldboyStudent(OldboyPeople): def __init__(self, name, age, sex, stu_id): OldboyPeople.__init__(self, name, age, sex) self.stu_id = stu_id def choose_course(self): print('%s is choosing course' % self.name) class OldboyTeacher(OldboyPeople): def __init__(self, name, age, sex, level): OldboyPeople.__init__(self, name, age, sex) self.level = level def score(self,

面向对象的三大特性

半世苍凉 提交于 2019-11-28 16:21:42
面向对象技术的三大特性:继承性、多态性和封装性。 继承性 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。 比如兔子和羊属于 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 继承的特性 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。 super 与 this 关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。 this关键字:指向自己的引用。 对于构造器而言,它只能够被调用,而不能被继承 子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的

面向对象

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 03:31:32
特性: (1)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。 (2)继承:继承是从已有类得到继承信息创建新类的过程。 (3)多态:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当 A系统访问B系统提供的服务时,B 系统有多种提供服务的方式,但一切对 A 系统来说都是透明的。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事: 第一:方法重写(子类继承父类并重写父类中已有的或抽象的方法); 第二:对象造型(用父类型引用指向子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。 (4)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 来源: https://www.cnblogs.com/wongandy/p/11389340.html