什么叫继承?

  所谓继承,就是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 继承与组合的更多相关文章

  1. Python 入门基础20 --面向对象_继承、组合

    今日内容 组合:自定义类的对象作为类的属性 继承:父类与子类.多继承 1.组合 将自定义类的对象作为类的属性 class Teacher: def __init__(self, name): self ...

  2. Python面向对象的三大特性之继承和组合

    继承和组合 一.组合 组合:组合指的是,在一个类中以另外一个类的对象(也就是实例)作为数据属性,称为类的组合 也就是说:一个类的属性是另一个类的对象,就是组合 例子: 圆环是由两个圆组成的,圆环的面积 ...

  3. 关于Java中的继承和组合的一个错误使用的例子

    [TOC] 关于Java中的继承和组合的一个错误使用的例子 相信绝大多数人都比较熟悉Java中的「继承」和「组合」这两个东西,本篇文章就主要就这两个话题谈论一下.如果我某些地方写的不对,或者比较幼稚, ...

  4. Java继承与组合

    Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...

  5. [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

    目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式 ...

  6. java 中继承,组合,重载,重写的实现原理 (转)

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  7. <Java中的继承和组合之间的联系和区别>

    //Java中的继承和组合之间的联系和区别 //本例是继承 class Animal { private void beat() { System.out.println("心胀跳动...& ...

  8. Java中的继承与组合(转载)

    本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别.首先文章会给出一小段代码示例,用于展示到底什么是继承.然后演示如何通过“组合”来改进这种继承的设计机制.最后总结这两者的应用场景,即到 ...

  9. [Objective-c 基础 - 2.3] 继承、组合

    A.继承的实现: is a 1.不允许子类.父类存在相同的成员变量 2.方法调用优先原则:子类调用方法的时候,优先从本类寻找,若无则向上在父类中寻找 3.重写:子类重新实现父类的方法,覆盖父类之前的方 ...

随机推荐

  1. MVC架构之delegate

    Qt的MVC架构可以实现很多数据显示的功能,本次主要对代理进行一个总结: 重实现QStyledItemDelegate类,实现自定义类. (1)ComboxDelegate.h #ifndef COM ...

  2. nyoj28-大数阶乘

    大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0& ...

  3. P1892 团伙

    题目描述 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友. 两个强盗是同一团伙的 ...

  4. [剑指offer] 50. 第一个只出现一次的字符 + map,hashmap 及其区别

    class Solution { public: int FirstNotRepeatingChar(string str) { map<char,int>mp; ;i<str.si ...

  5. coalesce函数-返回参数中第一个非null值

    coalesce函数-返回参数中第一个非null值 学习了:http://www.cnblogs.com/zc_0101/archive/2009/08/11/1543650.html 这个要复杂一些 ...

  6. CSDN高校俱乐部第二届战神杯第二题题解

    两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍.要保证结果非负, 首先得到0的人获胜. 比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8. ...

  7. 一个JavaWeb项目中使用的部分技术

    -- 2015年8月8日 1. Web框架: Spring+ SpringMVC + MyBatis Spring: 作为容器.工厂,用于解耦以及管理对象生命周期. 整合各类框架和依赖. MVC  : ...

  8. php面向对象之构造函数和析构函数

    php面向对象之构造函数和析构函数 简介 php面向对象支持两种形式的构造函数和析构函数,一种是和类同名的构造函数(php5.5之前),一类是魔术方法(php5.5之后).与类名相同的构造函数优先级比 ...

  9. C#调用mmpeg进行各种视频转换的类实例

    本文实例讲述了C#调用mmpeg进行各种视频转换的类.分享给大家供大家参考.具体如下: 这个C#类封装了视频转换所需的各种方法,基本上是围绕着如何通过mmpeg工具来进行视频转换 using Syst ...

  10. Python multiprocessing.Manager介绍和实例(进程间共享数据)

    Python中进程间共享数据,处理基本的queue,pipe和value+array外,还提供了更高层次的封装.使用multiprocessing.Manager可以简单地使用这些高级接口. Mana ...