码迷,mamicode.com
首页 > 其他好文 > 详细

2019年7月25日 类的继承 1

时间:2019-07-25 23:37:24      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:面向   没有   subclass   接口继承   作用   mem   name   file   color   

  面向对像: 继承,多态,封装

class ParentClass1:
    pass

class ParentClass2:
    pass

class SubClass(ParentClass1):#单继承
    pass

class SubClass2(ParentClass1,ParentClass2):#多继承
    pass

 

子类定义的属性如果喝父类属性重名了,则优先调用子类的,没有覆盖这一说

 

什么时候用继承:

1.当类中有显著不同,并且较小类事较大类所需要的组件时,用组合。

2.当类中有许多相同功能,提取这些共同的功能做成基类,用继承。

 

继承同时具有两种含义:

1.继承与派生:减小代码重用。(不独立,不推荐)

2.声明某个子类兼容某基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法。(vip 推荐)

class Dad:
    money=10
    def __init__(self,name):
        print(Dad)
        self.name=name

    def hit_son(self):
        print(%s 正在hit son%self.name)

class Son(Dad):
    money=55 #优先调用子类的,但不是覆盖


s1=Son(sxj)#son继承类dad的属性方法,dad存在需要传递参数 name
print(s1.money,s1.name,Dad.money)
s1.hit_son()

》》》》

Dad
55 sxj 10
sxj 正在hit son

 

 

接口继承:归一化设计。做出一个良好的抽象,这个抽象规定了一个兼容接口。

import abc #接口继承强制子类起到限制作用
class All_file(metaclass=abc.ABCMeta):#接口继承:定义父类,规定必须有read 和 write 方法,父类可以不实现,子类中但必须要有这2个方法
    @abc.abstractclassmethod#下面但抽象方法(强制子类必须有read和write方法)
    def read(self):
        pass

    def write(self):
        pass


class Disk(All_file):
    def read(self):
        print(Disk read)
    def write(self):
        print(Disk write)

class CDrom(All_file):
    pass

class Mem(All_file):
    pass

d1=Disk()
d1.read()
d1.write()

》》》

Disk read
Disk write

2019年7月25日 类的继承 1

标签:面向   没有   subclass   接口继承   作用   mem   name   file   color   

原文地址:https://www.cnblogs.com/python1988/p/11246648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!