python3 继承与组合
什么叫继承?
所谓继承,就是class_A里面的功能从class_B中直接获取,从而节约了代码且使用方便。
什么叫组合?
除了继承,还有一种我们可以实现目的的方式,那就是组合,同样可以节约代码。只不过,class_A与class_B的关系不再是父类与子类的关系,变成了A中有B。
继承大致分为3种类型:
1.隐式继承
2.显式覆盖
3.显式修改
接下来我会通过写代码举例子的方式去更好的让读者们去理解:
# 隐式继承
class Persion(object):
def sleep(self):
print("I need to sleep.")
def eat(self):
print("I need to eat.")
class Student(Persion):
pass
b = Student()
b.sleep()
b.eat()
# 这种在子类中没有对父类的内容进行修改的,称为隐式继承
# 输出内容为下:
I need to sleep.
I need to eat.
# 显示覆盖
class Persion(object):
def sleep(self):
print("I need to sleep.")
def eat(self):
print("I need to eat.")
class Student(Persion):
def sleep(self):
print("Student need to sleeping 8 hours")
b = Student()
b.sleep()
b.eat()
# 像这种在子类中拥有着和父类一样的方法或属性,并且修改了其方法的内容的,称为显式覆盖。
# 输出内容为下:
Student need to sleeping 8 hours
I need to eat.
# 显式修改
class Persion(object):
def sleep(self):
print("I need to sleep.")
def eat(self):
print("I need to eat.")
class Student(Persion):
def sleep(self):
print("Student need to sleeping 8 hours")
super(Student, self).sleep()
print("after")
a = Persion()
b = Student()
b.sleep()
b.eat()
# 像这种在子类中对父类的方法或属性修行修改(增加自己的东西),这样的继承称为显式修改
# 输出内容为下:
Student need to sleeping 8 hours
I need to sleep.
after
I need to eat.
组合的例子:
# 组合与继承达到的效果是一致的,只不过组合没有隐式这么一说。假如说class_A中有方法AA,而如果class_B也想拥有方法AA,则必须要创建这个方法AA才会具有。
# 其实,组合实际上就是在class_B上实例化了一个对象,在此基础上去调用这个对象的函数。 class Persion(object): def sleep(self):
print("I need to sleep.") def eat(self):
print("I need to eat.") class Student(object): def __init__(self): # 在生成实例前进行初始化操作的方法
self.other = Persion() # 定义一个对象并实例化 def sleep(self):
self.other.sleep() # 通过对象去调用sleep函数
print("But student need to sleeping 8 hours") def eat(self):
print("student like to eat apple.")
self.other.eat() # 通过对象去调用eat函数 a = Persion() b = Student() b.sleep() b.eat() # 输出内容为下:
I need to sleep.
But student need to sleeping 8 hours
student like to eat apple.
I need to eat.
python3 继承与组合的更多相关文章
- Python 入门基础20 --面向对象_继承、组合
今日内容 组合:自定义类的对象作为类的属性 继承:父类与子类.多继承 1.组合 将自定义类的对象作为类的属性 class Teacher: def __init__(self, name): self ...
- Python面向对象的三大特性之继承和组合
继承和组合 一.组合 组合:组合指的是,在一个类中以另外一个类的对象(也就是实例)作为数据属性,称为类的组合 也就是说:一个类的属性是另一个类的对象,就是组合 例子: 圆环是由两个圆组成的,圆环的面积 ...
- 关于Java中的继承和组合的一个错误使用的例子
[TOC] 关于Java中的继承和组合的一个错误使用的例子 相信绝大多数人都比较熟悉Java中的「继承」和「组合」这两个东西,本篇文章就主要就这两个话题谈论一下.如果我某些地方写的不对,或者比较幼稚, ...
- Java继承与组合
Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...
- [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类
目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式 ...
- java 中继承,组合,重载,重写的实现原理 (转)
我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...
- <Java中的继承和组合之间的联系和区别>
//Java中的继承和组合之间的联系和区别 //本例是继承 class Animal { private void beat() { System.out.println("心胀跳动...& ...
- Java中的继承与组合(转载)
本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别.首先文章会给出一小段代码示例,用于展示到底什么是继承.然后演示如何通过“组合”来改进这种继承的设计机制.最后总结这两者的应用场景,即到 ...
- [Objective-c 基础 - 2.3] 继承、组合
A.继承的实现: is a 1.不允许子类.父类存在相同的成员变量 2.方法调用优先原则:子类调用方法的时候,优先从本类寻找,若无则向上在父类中寻找 3.重写:子类重新实现父类的方法,覆盖父类之前的方 ...
随机推荐
- POJ2406A- Power Strings
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...
- mysql数据库增量恢复
mysqldump -uroot -p -B discuzx -F -x --master-data=2 --events|gzip >/root/discuzx.sql.gz 写入数据 删除数 ...
- 基于Tags的简单内容推荐的实现
原来为了简单方便,自己小网站上的文章页的相关内容推荐就是从数据库里随机抽取数据来填充一个列表,所以一点相关性都没有,更本没有办法引导用户去访问推荐内容. 算法选择 如何能做到相似内容的推荐呢,碍于小网 ...
- base64格式文件下载方法
下载图片时,接口返回的地址是base64格式的文件数据,因为页面需要把base64格式的数据转换为文件,再进行下载: 解决方案: 下载按钮: <el-button type="defa ...
- 关于错误CSC : error CS0006:未能找到元数据文件
在不同的解决方案中把一个项目搬来搬去,终于出现了传说的CSC : error CS0006.编译的时候总是提示一个引用中不存在的项找不到.无论怎样删除项目,删除引用都没法通过生成. 最终解决方案: 用 ...
- Profile 动态切换环境
一.多 Profile 文件我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用 application.properties 的 ...
- osEye.Net:离别是为了将来的重逢
这一时刻已经成为osEye历史..... 在热心网友的关怀和鼓励之下,osEye.net将继续运行着,感谢你们陪伴osEye一起走过.... 与你相知相恋已经有4个年头了,你的成长到成熟都让我历历在目 ...
- oracle 有个xe版本
oracle 有个xe版本 学习了:http://blog.csdn.net/angiexia/article/details/8615771
- Ruby按照换行符进行分割
Ruby按照换行符进行分割 string.split(/\n/)
- Android之怎样给ListView加入过滤器
给ListView加入文字过滤器: //this.getListView().setTextFilterEnabled(true);//可能报错用以下的 listView.setTextFilterE ...