day14-单继承
#面向对象的三大特征:继承、多态、封装。
#一、单继承:
# 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-单继承的更多相关文章
- 使用Object.create 克隆对象以及实现单继承
var Plane = function () { this.blood = 100; this.attack = 1; this.defense = 1; }; var plane = new Pl ...
- java类为什么是单继承。类的继承,实现接口。
java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ Sy ...
- 虚方法的调用是怎么实现的(单继承VS多继承)
我们知道通过一个指向之类的父类指针可以调用子类的虚方法,因为子类的方法会覆盖父类同样的方法,通过这个指针可以找到对象实例的地址,通过实例的地址可以找到指向对应方法表的指针,而通过这个方法的名字就可以确 ...
- C++对象模型:单继承,多继承,虚继承
什么是对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分.对于各种支持的底层实现机制. 类中成员分类 数据成员分为静态和非静态,成员函数有静态非静态以及虚函数 clas ...
- 对Java不能多继承,只能单继承,却可以实现多个接口的理解
1.java与C++的不同点在于多继承. Java:不能多继承,只能单继承,但可以实现多个接口 C++:可以实现多继承.例如: class A extends B implements C,D,E { ...
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...
- C++对象模型4--有重写的单继承
有重写的单继承 派生类中重写了基类的print()函数. //Derived_Overwrite.h #pragma once #include "base.h" class De ...
- C++对象模型3--无重写的单继承
C++对象模型中加入单继承 不管是单继承.多继承,还是虚继承,如果基于“简单对象模型”,每一个基类都可以被派生类中的一个slot指出,该slot内包含基类对象的地址.这个机制的主要缺点是,因为间接性而 ...
- js 完成单继承
//1.使用prototype完成单继承. //定义一个A类 function A(){ } //为A类动态调用属性color,与方法sayColor A.prototype.color = &quo ...
- C++多继承的好处是增加了弹性和灵活性,Delphi类强迫单继承TObject是为了提供许多强大功能
要说灵活性,是C++更强.我自己开发已经好几次碰到需要多继承的情况了. 但是Delphi强迫继承TObject,虽然是单继承,但是提供了相当多的强力功能.要说强大,那还是Delphi当仁不让. 摘自& ...
随机推荐
- c++ 正则表达式查找
C++ 正则表达式的使用 需求: 字符串含有除[0-9a-z]之外的字符,均返回失败! #include<regex> smatch result; string reg_str = &q ...
- input自动填入密码以后变成白色和黄色的解决办法
问题描述: 1.谷歌自动输入账号密码以后颜色变成黄色: 解决办法: 加样式: input:-webkit-autofill { background: red !important; color: # ...
- POJ - 3665 iCow(模拟)
题意:有N首歌曲,播放的顺序按照一定的规则,输出前T首被播放的歌的编号.规则如下: 1.每首歌有一个初始的等级r,每次都会播放当前所有歌曲中r最大的那首歌(若r最大的有多首,则播放编号最小的那首歌). ...
- POJ 1062:昂贵的聘礼
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 40715 Accepted: 11839 Descripti ...
- Redis的学习之路
应用场景 1.作为缓存使用 (1)原始业务功能设计 秒杀 双十一.618 排队购票 (2)运营平台察觉到突发式高频访问热点 突发式热点新闻 (3)高频复杂的统计数据 在线直播 投票排行榜 2.附加功 ...
- .NET core ABP 获取远程IP地址
2.asp.net core 2.x上配置 第一步:在控制器中定义变量 private IHttpContextAccessor _accessor; 第二步: 控制器的构造函数进行注入 public ...
- Thread--停止线程
参考:http://blog.sina.com.cn/s/blog_6ca570ed01016mti.html Thread.interrupt()方法不会中断一个正在运行的线程.它的作用是,在线程受 ...
- 解决Android Studio的安装问题
今天开始了android studio的下载与安装,我再官网上下载了Android studio,下载不难,运行出来可需要一定的时间,在中途中我遇到了一些问题 一:Build错误: 在我最开始下载完A ...
- eclipse启动tomcat出现8080,8009,8005端口被占用的问题
有时候我们在eclipse中启动项目时,Tomcat服务器会报错,显示8080.8009.8005这几个端口被占用,此时你用debug启动项目时会发现不管用,console控制台什么信息也没有,此时产 ...
- 基于JWT的token认证机制
1. 一个JWT实际上就是一个字符串,由三部分组成 头部,载荷,签名 头部:事描述类型,签名,算法等 可以被表示成一个JSON对象 载荷:存放有效信息的地方 包含三个部分 (1)标准注册中的声明-建议 ...