zoukankan      html  css  js  c++  java
  • 面向对象-接口类,抽象类,多态,封装

    一.接口类和抽象类:制定一个规范

      抽象类的本质还是类,指的是一组类的相似性,包括数据属性和函数属性,而接口只强调函数属性的相似性.

      抽象类是一个介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计.

      在python中,并没有接口类这种东西

    from abc import ABCMeta,abstractmethod  #用abc模块
    class Payment(metaclass=ABCMeta): #固定格式
        @abstractmethod
        def pay(self):   #制定一个规范
            pass
    class Alipay(Payment):
        def __init__(self,money):
            self.money = money
        def pay(self):
            print('使用支付宝支付了%s' %self.money)
    class Jdpay(Payment):
        def __init__(self, money):
            self.money = money
        def pay(self):
            print('使用京东支付了%s' % self.money)
    class Wechatpay(Payment):
        def __init__(self,money):
            self.money = money
        def pay(self):
            print('使用微信支付了%s' % self.money)
    def pay(obj):  #定义一个函数目的是使支付方式一样
        obj.pay()
    a1 = Alipay(100) 
    j1 = Jdpay(200)
    w1 = Wechatpay(300)
    pay(a1)  #归一化设计
    pay(j1)
    pay(w1)
    结果:

    使用支付宝支付了100
    使用京东支付了200
    使用微信支付了300

    
    

    二.多态: 一个事物有多种形态

    由于python是弱类型语言的特性,所有在Python语言中处处都是多态:

    鸭子类型:看着像鸭子,其实就是鸭子

    解释:比如说str,list,tuple都有index(索引),而且在用法都一样,但它们是不同的类型,这就称为多态

    #二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用
    class TxtFile:
        def read(self):
            pass
    
        def write(self):
            pass
    
    class DiskFile:
        def read(self):
            pass
        def write(self):
            pass

    三,封装

    广义的封装:实例化一个对象,给对象空间封装一些属性

    狭义的封装:私有制

    私有成员:私有静态字段,私有方法,私有对象属性

    在python中用双下划线开头的方式,是将属性隐藏起来

    好处:1.将变化隔离.

      2.便于使用

      3.提高复用性

      4,提高安全性

    私有静态字段:只能在本类的内部访问,类的外部,派生类不能访问

    私有方法:只能在本类的内部访问,类的外部,派生类不能访问

    私有对象属性:只能在本类的内部访问,类的外部不能访问

  • 相关阅读:
    Linux Netcat命令
    clang-format
    keytool
    ip
    Linux iptables
    Linux yum源完全配置
    Makefile
    CMake
    HSTS
    开源镜像
  • 原文地址:https://www.cnblogs.com/ITdong-1/p/9373725.html
Copyright © 2011-2022 走看看