多继承

Java基础1_基本介绍以及环境安装配置

删除回忆录丶 提交于 2019-11-27 11:46:05
前言 `: 由于大学期间java自学基础自我感觉还是太差,从2019.5.13开始,重新对java基础开始学习,结合java基础编程思想对java基础进行深入的学习,各种细节尽量过一遍,在此与大家共勉。 Java简介 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。后来被Oracle公司收购,现在的官方网站是: http://www.oracle.com/technetwork/java/index.html ,Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。 Java目前来说分为三个体系: JavaSE:JavaSE也称为j2SE,他是输出java平台的标准版 JavaEE:JavaEE在外面企业中是最常见的,是java平台的企业版 JavaME:目前还未使用过这个,是java平台的微型版 java语言的主要特性: 1.java语言是简单的 java的语法与c语言和c++语言是很接近的,由于我本人大学期间也是学习了这三种语言,就我个人来说,我觉得使用的体验度是:Java > c++ > c。Java中丢弃了c++中很难理解的一些特性,如操作符重载,多继承,自动的强制类型转换等等。特别是Java语言不适用指针,而用引用,并提供动力自动回收机制(就是我们平时所说的GC),为我们的编程提供了很大的便利。

继承 多态 封装 及内置函数

纵然是瞬间 提交于 2019-11-27 06:12:01
**什么时候用组合什么时候用继承:** 老师类 和 生日类 老师的生日 老师.生日 用组合 老师类 和 人类 老师是人 class老师类(人类) 用继承 另外,有相同属性也可判断要用继承 ### 组合 一个对象的属性值是另外一个类的对象 一个类的属性 用另一个类的对象来描述 两连点:alex.weapon.hand18(jin) alex的weapon属性,因为是一个另类的对象,weapon也有自己的方法,故两连点 ```python # 人狗大战 class Dog: def __init__(self,name,aggr,hp,kind): self.name = name self.aggr = aggr #武力值 self.hp = hp #血 self.kind = kind #咬 def bite(self,person): person.hp -= self.aggr class Person: def __init__(self,name,aggr,hp,sex): self.name = name self.aggr = aggr self.hp = hp self.sex = sex self.money = 0 def attack(self,dog): dog.hp -= self.aggr #获取装备 def get_weapon(self,weapon)

【M24】了解虚方法、多继承、虚基类、RTTI的成本

喜欢而已 提交于 2019-11-27 01:17:06
1、编译器必须实现出C++语言的特性。一般情况下,我们只需要使用这些特性就好了,不需要关心内部的实现细节。但是,有些特性的实现,会对对象的大小和成员方法的执行速度造成影响。因此,有必要了解内部实现的细节。 2、首先考虑虚方法,虚方法是用来实现多态的。多态是指对于指针和引用,表面类型和真实类型不一致的情况下,调用真实类型的虚方法。 3、虚方法有关的实现细节为:   a、父类有一个虚方法表(vtbl),可以认为是一个方法指针的数组(这里注意:对于数组,我们知道元素的类型必须一致,虚方法表中的虚方法类型是不一样的,这里进行了特殊处理),方法指针指向父类的虚方法。   b、子类整体拷贝父类的虚方法表,对于重写的虚方法,在相同位置置换为重写后的虚方法地址,对于新增的虚方法,在数组的尾部添加。   c、对于多态类的对象,内部有一个字段为vptr,指向该类的vtbl。考虑,构造子类对象,首先调用父类构造方法,将vptr初始化为指向父类的虚方法表,然后调用子类的构造方法,将vptr重置为指向子类的虚方法表。 4、需要注意的情况:   a、虚方法表是对应于类的,一个类有一个虚方法表。一般情况下,内存的消耗可以忽略。但是考虑极端的情况,一个父类有1000个虚方法,子类重写一个虚方法,并且有大量类似的子类,出现相同的方法指针,存储多次,就会导致占用大量的内存。   b、对象多一个vptr字段

Python抽象类和接口类

不打扰是莪最后的温柔 提交于 2019-11-26 11:53:17
zxq547 python定义接口继承类invalid syntax解决办法 1 2 3 4 5 6 7 class s_all(metaclass = abc.ABCMeta): #python2.7用此方法定义接口继承 # __metaclass__ = abc.ABCMeta @abc .abstractmethod def read( self ): pass pyhton2.7会报错,此方法用于python3+pyhton2.7应用次方法定义 1 2 3 4 5 6 7 class s_all(): #python2.7用此方法定义接口继承 __metaclass__ = abc.ABCMeta @abc .abstractmethod def read( self ): pass Python之抽象类、抽象方法 抽象类中只能有抽象方法,子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。 Python2 class CopyBase(object): def save(self): raise NotImplementedError class CopyPaper(CopyBase): def __init__(self): pass def save(self): print("copy paper") class CopyQuestion