版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kimidake/article/details/89789846
根据Java的说法,抽象类是以abstract为关键字声明的类,类内部既可以有抽象方法,也可以有一般方法。
抽象类是对某类具有相似特征的对象进行的抽取,提炼出共性而存在。(如:Cat类和Dog类可抽象出Animal类)
接口是对某一类行为的抽取,对此类行为提取出共性,由各个实现类负责具体方法。(如:Cat会跑,Dog会跑,可抽象出Run接口)
抽象类:内部方法可实现也可交由子类实现
接口:内部方法只能由实现类去实现
Python没有抽象类和接口之分,统一为抽象类,由abc模块实现此功能
抽象方法有两种实现方式:@classmethod或者@abc.abstractmethod,其余方法不推荐
# 抽象类
import abc
class Animal(metaclass=abc.ABCMeta):
@classmethod
def name(self,name):
pass
class Cat(Animal):
def name(self, name):
print('我叫:' + name)
if __name__ == '__main__':
Cat().name('huahua')
多继承:Java不支持多继承,为了弥补,只能以接口来间接实现多继承,Python直接支持多继承,
class Child(Super1,Super2,···)