学习日志0820类的继承

1 什么是继承

  继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类

  继承的特性:子类可以遗传/重用父类的属性

  python中继承的特点:

  1 python中一个子类可以同时继承多个父类

  2 在继承的背景下去说,python中的类分为两种:

    新式类,经典类:

    新式类:但凡继承了object的类Foo,以及该类的子类都是新式类

      在python3中都是新式类,默认继承object

    经典类:没有继承object的类,以及该类的子类

在子类派生出的新方法中重用父类的功能的方式一:

指明道姓的引用一个类中的函数:

  

class a:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

class b(a):
    def __init__(self,name,age,sex,b)
        a.__init__(self,name,sex)
        self.b= b

  总结:

    1 与继承无关

    2 访问没有自动传值的效果

  在多继承背景下属性的查找的优先级:

    如果一个子类继承多个分支:就一个分支一个分支的查找,一个分支完全找完再找另一个分支

  在菱形继承中:

    新式类:广度优先查找先(一个分支一个分支的查找,所有的分支都查找完了之后再找顶级的)

    经典类:深度优先查找(一个分支一个分支的找,第一个分支直接到顶级)

  在子类中重用父类的方式二:

    super()

class a:
    def __init__(self,name,age,sex):
        self.name= name
        self.age = age
        self.sex = sex

class b(a):
    def __init__(self,name,age,sex,b):
        supper().__init__(name,age,sex)
        self.b = b

原文地址:https://www.cnblogs.com/jianhaozhou/p/9505470.html

时间: 2024-08-30 09:29:31

学习日志0820类的继承的相关文章

C#学习笔记(类的继承、重写)

1 隐藏基类的方法 当基类继承一个(非抽象的)成员时,也就继承了其实现代码.如果继承的成员是虚拟的,就可以用override关键字重写这段实现代码.无论继承的成员是否为虚拟,都可以隐藏这些代码. 使用下面的代码就可以隐藏: public class MyBaseClass { public void DoSomething() { //Base implementation. } public class MyDerivedClass : MyClass { public void DoSome

Cocos2d-x 3.1.1 学习日志3--C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员

有关const成员.static成员.const static成员的初始化: 1.const成员:只能在构造函数后的初始化列表中初始化 2.static成员:初始化在类外,且不加static修饰 3.const static成员:类只有唯一一份拷贝,且数值不能改变.因此,可以在类中声明处初始化,也可以像static在类外初始化 #include <iostream> using std::cout; using std::endl; class base { public: base(int

iOS学习第一天(Objective-C语言的类/继承)

在学习完c语言之后,今天开始了对OC语言的学习,今天主要学习的是对OC中的类进行说明和继承. 1.类的定义和使用 在文件夹上右击,选择New File...-Cocoa Class-输入类的名称-Creat.即可新建一个类.注意,选择要继承的类为NSObject 首先在所建立的.h文件中进行对类的声明部分,之后在.m文件中进行对类的实现部分. 对类声明部分的语法: @interface 类的名字:父类的名字 { 类的数据的定义 } @end 对类的实现部分的语法: @implementation

C++ Primer 学习笔记_72_面向对象编程 --句柄类与继承[续]

面向对象编程 --句柄类与继承[续] 三.句柄的使用 使用Sales_item对象能够更easy地编写书店应用程序.代码将不必管理Item_base对象的指针,但仍然能够获得通过Sales_item对象进行的调用的虚行为. 1.比較两个Sales_item对象 在编写函数计算销售总数之前,须要定义比較Sales_item对象的方法.要用Sales_item作为关联容器的keyword,必须能够比較它们.关联容器默认使用keyword类型的小于操作符,可是假设给Sales_item定义小于操作符,

Cocos2d-x 3.1.1 学习日志8--2分钟让你了解cocos2d-x3.1.1 文本类

其实常用的文本就那三个,LabelTTF,LabelBMF和LabelAtlas.而它们的用法也极其相似,所以只要你会举一反三,相信你很快就可以掌握了. <span style="font-family:SimHei;font-size:18px;">bool MyScene::init() { Size size = Director::getInstance()->getWinSize();//屏幕的大小 LabelTTF *lable1 = LabelTTF::

Cocos2d-x 3.1.1 学习日志2--error:只有静态常量整型数据成员才可以在类中初始化

今天遇到比较低端的一个问题,就是成员的初始化问题,编译器也无法验证,不同的编译器有些能过有些不能过,我也不知道为什么,总是我们以vs为准吧,以为我们用的环境就是它,话不多说,解决方案如下: 在类中    static const double PI=3.1416; error:只有静态常量整型数据成员才可以在类中初始化 常整型静态数据成员可以在类中直接初始化,而常实型静态数据成员不可以 class circle { int a; // 普通变量,不能在类中初始化 static int b; //

C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域

面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好像这些成员是派生类成员一样: Bulk_item bulk; cout << bulk.book() << endl; 名字book的使用将这样确定[先派生->后基类]: 1)bulk是Bulk_item类对象,在Bulk_item类中查找,找不到名

一步一步学习C++(类)之继承与派生

// PaiShengAndDerive.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <string.h> class Teacher { public: Teacher(const char *s,int x,int n) { strcpy(MathTeaName,s); ClassRoom = x; TeaYear = n; printf("基类构造函数!\n"); } void disp

Cocos2d-x 3.1.1 学习日志7--7分钟让你了解cocos2d-x3.1.1 Sprite精灵类

精灵(Sprite)是游戏里面的角色,比如敌人,游戏里面运动的物体等等,所以精灵是游戏里面一个非常常见的概念,几乎无处不在.在Cocos2D-x里面精灵是用Sprite类来进行表示的,它可以用一张图片或者一张图片的一块矩形部分来定义. 在自己设计的MyScene类中,我写了六种常用精灵的出现方式.分别是sp1,sp2,sp3,sp4,sp5,sp6.上代码: bool MyScene::init() { Size size = Director::getInstance()->getWinSiz