继承的基本使用 | 学习笔记

简介: 快速学习继承的基本使用,介绍了继承的基本使用系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Python 入门 2020年版继承的基本使用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10385


继承的基本使用


内容介绍:

一、 面向对象的三大特征

二、 继承的使用

 

一、面向对象的三大特征

面向对象的编程里有三大特性:封装、继承和多态。

1.封装:函数是对语句的封装;类是对函数和变量的封装

def test():

a = 23  # 赋值语句

a = 3  # 算数运算符表达式语句

print( ' hello')

print( ' good )

在我们最开始写代码的时候写的是一个一个的语句,多个语句写起来很复杂我们就会把他们打包成一个函数,函数就是一种封装。

class Person(object):

type =人类

def __init__(self):

pass

def eat(self):

pass

类里面是一个一个函数,是更高级的封装。

2.继承:类和类之间可以人为手动的建立父子关系,子类可以使用

3.多态:是一种技巧,提高代码的灵活度。


二、继承的使用

class Animal(object):

def __init__(self,name,age) :

self.name = name

self.age = age

def sleep(self):

print(self.name + 正在睡觉)

class Dog(object):

def __init__(self,name,age) :

self.name = name

self.age = age

def sleep(self):

print(self.name + 正在睡觉)

def bark(self):

print(self.name + '正在叫)

class Student(object):

def __init__(serf, name,age) :

self.name = name

self.age = age

def sleep(self):

print(self.name + '正在睡觉)

def study(self):

print(self.name +正在好好学习)

图片4.png

在这段代码中会发现有很多重复的地方,这时就可以创建一个认为的继承关系。

把 Animal 作为父类(基类), dog 和 student 作为子类(派生类)。如果父类里有子类要使用的类,那么子类就可以直接使用父类中的类不用再创建相应的类。

class Animal(object):

def __init__(self,name,age) :

self.name = name

self.age = age

def sleep(self):

print(self.name + 正在睡觉)

class Dog(Animal):

def bark(self):

print(self.name + '正在叫)

class Student(Animal):

def study(self):

print(self.name +正在好好学习)

# Dog()调用 __new__ 方法,再调用 __init__ 方法

# Dog里没有 __new__ 方法,会查看父类是否重写了 __new__ 方法

# 父类里也没有重写 __new__ 方法,查找父类的父类,找到了  object

# 调用 __init__ 方法,  Dog 类没有实现,会自动找 Animal 父类

d1 = Dog

print(d1) # 父类里定义的属性,子类可以直接使用

图片5.png

在这种情况下运行 d1 会报错,在运行时 Dog() 调用 __new__ 方法,再调用 __init__ 方法Dog 里没有 __new__ 方法,会查看父类是否重写了 __new__ 方法,父类里也没有重写 __new__ 方法,查找父类的父类,找到了 object 中的 __new__ 方法。 

调用 __init__ 方法,Dog里没有 __init__ 方法,会查看 Animal 父类里是否有,Animal的 __init__ 方法需要两个参数但是 d1 并没有两个参数所以会报错。

class Animal(object):

def __init__(self,name,age) :

self.name = name

self.age = age

def sleep(self):

print(self.name + 正在睡觉)

class Dog(Animal):

def bark(self):

print(self.name + '正在叫)

class Student(Animal):

def study(self):

print(self.name +正在好好学习)

d1 = Dog('大黄',3)

print(d1.name)  # 父类里定义的属性,子类可以查接使用

d1.sleep()  # 父类的方法子类实例对象可以直接调用

父类里定义的属性,子类可以直接使用父类的方法子类实例对象可以直接调用

这里的 Dog 不仅能够调用 sleep 还能调用 dark。 Student 可以调用 sleep 和 study ,但不能调用 dark 

相关文章
|
9月前
|
Java C++
C++进阶之继承(下)
在 C++ 中,友元关系是不继承的,这意味着基类的友元不能访问派生类的私有和保护成员。 如果一个类被声明为另一个类的友元,那么这个友元类可以访问该类的私有和保护成员。然而,这种访问权限不会被继承到派生类中。即使基类的成员函数被声明为子类的友元,也不能访问子类的私有和保护成员。
|
2月前
|
存储 安全 Java
【C++进阶】1. 继承
【C++进阶】1. 继承
35 3
|
2月前
|
编译器 C++
C++进阶--继承
C++进阶--继承
|
9月前
|
安全 编译器 C++
C++进阶之继承(上)
在C++中,继承是一种面向对象编程的重要概念,它允许一个类(称为子类或派生类)从另一个类(称为父类、基类或超类)那里继承属性和行为。继承是实现代码重用、构建层次结构以及实现多态性的基础。
|
12月前
|
存储 安全 Java
【C++】模板进阶|继承
模板的特化和分离编译、继承的全方面剖析。
|
12月前
|
安全 C++
【C++ 进阶】继承
【C++ 进阶】继承
93 0
|
安全 Java 编译器
C++进阶】一、继承(总)
目录 一、继承的概念及定义 1.1 继承概念 1.2 继承定义 1.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 7.1 继承的分类 7.2 菱形虚拟继承 7.3 菱形虚拟继承原理 八、继承总结
63 0
C++进阶】一、继承(总)
|
存储 C++
C++进阶 继承(下)
C++进阶 继承(下)
108 0
C++进阶 继承(下)
|
编译器 C++ Python
C++进阶 继承(上)
C++进阶 继承(上)
114 0
C++进阶 继承(上)