首页 技术 正文
技术 2022年11月12日
0 收藏 998 点赞 2,685 浏览 1614 个字

面向对象三大特性

1.三大特性?

继承,多态,封装

2.什么是继承?

类的继承和现实生活中的父与子,继承关系是一样的,父类为基类。

python中的类继承分为:单继承和多继承

3.举例说明

class Dad:
money = 100
def __init__(self,name):
self.name =name
print(name)
def hit(self):
print('%s 正在打孩子' %self.name)class Son(Dad):
passs1 = Son('abc')print(Son.money)
s1.hit()

运行结果:

abc
100
abc 正在打孩子Process finished with exit code 0

4.什么时候用继承?

—-当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。

—-当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好。

class Animals:
def eat(self,name):
print('%s 正在吃'%self.name)
def drink(self,name):
print('%s 正在喝'%self.name)
class Cat(Animals):
def __init__(self,name):
self.name = nameclass Dog(Animals):
def __init__(self,name):
self.name = namec1 = Cat('xiaobai')
c1.eat(Animals)
c1.drink(Animals)d1 = Dog('xiaohei')
d1.drink(Animals)
d1.eat(Animals)

运行结果:

xiaobai 正在吃
xiaobai 正在喝
xiaohei 正在喝
xiaohei 正在吃Process finished with exit code 0

5.接口继承与归一化设计

父类当中规定好了,子类的方法,但是不去实现。只要子类继承了父类,需要自己再去实现自己的方法。

举例:(一切皆文件)

import abc
class Test(metaclass=abc.ABCMeta): # 加上一个限制,只是为了规范子类
@abc.abstractclassmethod # 必须有以下函数,不然无法实例化
def read(self):
pass
@abc.abstractclassmethod # 必须有以下函数,不然无法实例化
def write(self):
passclass Disk(Test):
def read(self):
print('this disk read')
def write(self):
print('this is disk write')class CD(Test):
def read(self):
print('this cd read')
def write(self):
print('this is cd write')class Mem(Test):
def read(self):
print('this is mem read')
def write(self):
print('this is mem write')d1 = Disk()
d1.read()
d1.write()c1 = CD()
c1.read()
c1.write()m1 = Mem()
m1.read()
m1.write()

运行结果:

this disk read
this is disk write
this cd read
this is cd write
this is mem read
this is mem writeProcess finished with exit code 0

6.继承顺序

—- python的类可以继承多个类,Java和C#中则只能继承一个类

—-python的类如果继承多个类,那么其寻找方法的方式有两种,一是深度优先,二是广度优先

python学习-64   面向对象三大特性—-继承1

~~~~子类会先于父类被检查

~~~~多个父类会根据它们在列表中的顺序被检查

~~~~如果对下一个类存在两个合法的选择,选择第一个父类

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,892