#面向对象的三大特征:继承、多态、封装。
#一、单继承:
# 1.
class Animal: #没有父类,默认继承了顶级父类object类。
def __init__(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp class Person(Animal): #子类继承父类的属性和方法。
pass class Dog(Animal): #当Person和Dog具有相同的属性的时候,可以通过继承父类来简化代码。
pass p = Person('alex',10,9)
print(p.name)
d = Dog('jin',8,7)
print(d.name) #2.派生属性和派生方法:在继承父类的属性或方法的基础上,增加新功能:
class Animal:
def __init__(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp def attack(self):
print('调用攻击技能') class Person(Animal):
def __init__(self,name,aggr,hp,money): #子类想派生属性,需要把初始化方法和参数重写一遍,并且添加新参数。
Animal.__init__(self,name,aggr,hp) #调用父类的属性。
self.money = money #派生属性 def attack(self,dog):
Animal.attack(self) #调用父类的方法。
print('%s掉血'%dog) #派生方法 alex = Person('alex',10,9,200)
print(alex.name)
print(alex.money)
alex.attack('jin') #3.当子类和父类的方法名一样的情况下,执行子类的方法:
class Animal:
def __init__(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
def attack(self):
print('调用攻击技能') class Person(Animal):
def attack(self): #子类和父类的方法名一样。
print('执行子类的方法') alex = Person('alex',100,80)
alex.attack() #结果:执行子类的方法 #4. super:
class Animal:
def __init__(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
def attack(self):
print('调用父类的攻击技能') class Person(Animal):
def __init__(self,name,aggr,hp,money):
super().__init__(name,aggr,hp) #父类也叫超类,super()调用父类,相当于super(Person,self),所以__init__后面不需要self。
self.money = money
def attack(self,a):
super().attack()
print('战斗力提高百分之{}'.format(a)) alex = Person('alex',100,80,800)
print(alex.name)
alex.attack(80) super(Person,alex).attack() #结果:调用父类的攻击技能。在类的外面也可以使用super:类的实例化对象调用父类的方法。

day14-单继承的更多相关文章

  1. 使用Object.create 克隆对象以及实现单继承

    var Plane = function () { this.blood = 100; this.attack = 1; this.defense = 1; }; var plane = new Pl ...

  2. java类为什么是单继承。类的继承,实现接口。

    java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ Sy ...

  3. 虚方法的调用是怎么实现的(单继承VS多继承)

    我们知道通过一个指向之类的父类指针可以调用子类的虚方法,因为子类的方法会覆盖父类同样的方法,通过这个指针可以找到对象实例的地址,通过实例的地址可以找到指向对应方法表的指针,而通过这个方法的名字就可以确 ...

  4. C++对象模型:单继承,多继承,虚继承

    什么是对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分.对于各种支持的底层实现机制. 类中成员分类 数据成员分为静态和非静态,成员函数有静态非静态以及虚函数 clas ...

  5. 对Java不能多继承,只能单继承,却可以实现多个接口的理解

    1.java与C++的不同点在于多继承. Java:不能多继承,只能单继承,但可以实现多个接口 C++:可以实现多继承.例如: class A extends B implements C,D,E { ...

  6. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

  7. C++对象模型4--有重写的单继承

    有重写的单继承 派生类中重写了基类的print()函数. //Derived_Overwrite.h #pragma once #include "base.h" class De ...

  8. C++对象模型3--无重写的单继承

    C++对象模型中加入单继承 不管是单继承.多继承,还是虚继承,如果基于“简单对象模型”,每一个基类都可以被派生类中的一个slot指出,该slot内包含基类对象的地址.这个机制的主要缺点是,因为间接性而 ...

  9. js 完成单继承

    //1.使用prototype完成单继承. //定义一个A类 function A(){ } //为A类动态调用属性color,与方法sayColor A.prototype.color = &quo ...

  10. C++多继承的好处是增加了弹性和灵活性,Delphi类强迫单继承TObject是为了提供许多强大功能

    要说灵活性,是C++更强.我自己开发已经好几次碰到需要多继承的情况了. 但是Delphi强迫继承TObject,虽然是单继承,但是提供了相当多的强力功能.要说强大,那还是Delphi当仁不让. 摘自& ...

随机推荐

  1. POJ - 1742 Coins(dp---多重背包)

    题意:给定n种硬币的价值和数量,问能组成1~m中多少种面值. 分析: 1.dp[j]表示当前用了前i种硬币的情况下,可以组成面值j. 2.eg: 3 10 1 3 4 2 3 1 (1)使用第1种硬币 ...

  2. idea 2019.3 最新破解补丁和激活码,可破解至2089年!

    链接:https://blog.csdn.net/qq_42914528/article/details/85617901 上面方法失效了,请尝试以下方式激活(2020.1.6更新) idea激活码( ...

  3. 技术沙龙|原来落地AI应用是这么回事儿!

    目前人工智能已经迈入应用落地之年,作为备受关注的话题,在重磅政策的加持下市场规模迅速扩大并渗透到各行各业的形势越发鲜明.在此背景下,作为国内不容忽视的创新企业之一,京东AI依托于NeuHub平台对数据 ...

  4. maxima安装&使用

    环境: mint 19 或者 > ubuntu 18 源代码安装的好处, 可以使用最新版. mint 19.1 下面, 利用apt 直接安装的maxima版本太老,不支持 draw 函数. lo ...

  5. 72)MFC测试动态共享库

    动态共享库: 首先我建立一个新的动态库: 然后不选择空项目了,因为我们普通的cpp文件 入口是main  win32入口是winmain  那么这个动态库的入口在哪里  我们就是为了看一看: 出来这样 ...

  6. 小程序转义字符去空格 

    <text ].specInfo}}</text> 在微信小程序开发过程中,有时候会用到常用的一些特殊字符如:‘<’.‘>’.‘&’.‘空格’等,微信小程序同样支 ...

  7. 详细的git入门级别,从安装到实战

    拥有自己码云开源网站,想要上传项目到码云怎么操作?公司新技术提升由Svn转为Git,慌不慌?想要从Github开源网站下载开源项目,难道还依赖直接下载项目然后解压导入项目工程?下面可以通过及其简易且好 ...

  8. [腾讯 TMQ] 接口测试用例设计

    接口测试 [腾讯 TMQ] 接口测试用例设计 腾讯移动品质中心 · 2018年01月17日 · 最后由 于静 回复于 20 天前 · 21794 次阅读 本帖已被设为精华帖! 目录 作者:刘燕 团队: ...

  9. Python笔记_第四篇_高阶编程_进程、线程、协程_2.线程

    1. 线程概述: 在一个进程的内部,要同时干多件事情,就需要同时运行“多个子任务”,我们把进程内的这些“子任务”叫做线程.也就说线程是进程成的子任务. 线程通常叫做情景的进程.线程是通过向内侧控件的并 ...

  10. EOF是什么?(笔记)

    一.参考文章 1.EOF是什么?(阮一峰网络日志) 2.Linux 中的 EOF 到底是什么 二.知识点 1.EOF 定义在 /usr/include/stdio.h 文件中: 从上面 EOF 的定义 ...