本文转自:http://blog.csdn.net/fanteathy/article/details/7309966 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量.抽象类中可以声明各种类型成员变量,实现数据的封装.(另Java接口中的成员变量都要声明为public static final类型) <?php abstract c…
一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名道姓 :父类名.方法名(self,arg1,..) 多继承 钻石继承 经典类 python2 不继承object 查找名字遵循深度优先遍历算法 新式类 python3中都是新式类 在py2中继承object 查找名字遵循广度优先遍历算法 当一个节点可以在深度广度上都有机会被访问到的时候 优先从广度上…
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对象抽象而来的, 那么抽象类就是基于类抽象而来的.   从实现角度来看, 抽象类与普通类的不同之处在于: 抽象类中有抽象方法, 该类不能被实例化, 只能被继承, 且子类必须实现抽象方法. 这一点与接口有点类似, 但其实是不同的. 实现不同的支付方式: class Alipay: def __init_…
抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstractclassmethod class Payment(metaclass=ABCMeta): # 创建一个抽象 (接口) 类 的父类, @abstractclassmethod def pay(self): pass # 制定一个规范 只是放在那里 class Alipay(Payment): d…
一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类都使用pay 方法支付. 二 多态 python 中处处是多态 鸭子类型:看着像鸭子,他就是鸭子. 三 封装 广义的封装:实例化一个对象,给对象空间封装一个属性 狭义的封装:私有制 私有制成员:私有静态字段     私有方法      私有对象属性 私有静态字段 1. 2.通过_ _进行私有制,因此…
抽象类与类型定义相关: 接口类与行为规范相关: 接口类不是类型. 抽象类:是不完整的类,函数实现未定义:可以继承,不可以实例化. 接口类:接口类不是类:是类间交互的规范:不能继承.不能实例化,只能实现. 接口类:协议类. 接口类是抽象类的二次抽象,将抽象类中的数据移除. 接口类只依赖通用数据,不依赖具体数据. 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式.…
接口 书面定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 在java中不直接支持多继承,因为会出现调用的不确定性.所以java将多继承机制进行改良,在java中变成了多实现. 当一个抽象类里面全部是抽象方法时,且与继承类之间实现功能体现更强于所属关系,就可以定义为接口interface,更趋近于体现功能的集合特点 1 接口的特点: 1:接口不可实例化,可结合多态…
区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量.抽象类中可以声明各种类型成员变量,实现数据的封装.(另JAVA接口中的成员变量都要声明为public static final类型) <?php abstract class Father { function meth1() { echo "meth1...<br>…
接口类抽象类 接口类:接口类就是制定一个规则,让其他人按照我的规则去写程序. #!/usr/bin/env python from abc import ABCMeta,abstractmethod #针对新手强制规定类的格式,不统一格式就报错 class payment(metaclass=ABCMeta): #类的模板,新加入的类必须沿用这个类的模型 @abstractmethod def pay(self,money): pass class qqpay: def pay(self, mo…
归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) class QQpay: def pay(self,money): print('使用QQ支付了%s元' % money) def pay(way,money): # 以上两个类都使用了pay方法去完成相似的功能, way.pay(money) # 所以可定义一个***相同的函数名***来完成这个功能…