zoukankan      html  css  js  c++  java
  • 面向对象之多态、封装(初级)

    一、多态

    多态的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类。

    多态表明了动态(又名,运行时)绑定的存在,允许重载及运行时类型确定和验证。

    多态就是类的改变和扩展的一个具体的实现机制

    python中的标准类型就是多态概念的一个很好的示范

    class H2O:
        def __init__(self,name,temperature):
            self.name=name
            self.temperature=temperature
        def turn_ice(self):
            if self.temperature < 0:
                print('[%s]温度太低结冰了'%self.name)
            elif self.temperature > 0 and self.temperature<100:
                print('[%s]液化成水'%self.name)
            elif self.temperature > 100:
                print('[%s]温度太高变成了水蒸气'%self.name)
    
    class Water(H2O):
        pass
    class Ice(H2O):
        pass
    class Steam(H2O):
        pass
    
    w1=Water('',25)
    
    i1=Ice('',-20)
    
    s1=Steam('蒸汽',3000)
    
    #不同的类产生实例调用基类相同的功能体现出多态
    w1.turn_ice()
    i1.turn_ice()
    s1.turn_ice()
    
    #模拟len()方法
    def func(obj):
        obj.turn_ice()
    
    func(w1)#w1.turn_ice()
    func(i1)#i1.turn_ice()

    二、封装

    是一种思想,封就是把东西隐藏起来,装就是类定义属性和方法

    真正意义的封装:明确区分内外,内部的实现逻辑,外部无法知晓,并且为封装到内部的逻辑提供一个访问接口给外部使用

    定义类的属性和方法的过程就是装的过程

    class People:
        __star='earth'#前面加 _ 是一种约定,调的时候是 _ 开头的,则此属性不应该在外部被使用,就是隐藏的意思
                      #__开头python内部会重命名成 _People__star,并且可以调用到
        def __init__(self,id,name,age,salary):
            self.id=id
            self.name=name
            self.age=age
            self.salary=salary
    
        def get_id(self):
            print('我是私有方法啊,我找到的id是[%s]'%self.id)
    
        #接口函数
        def get_star(self):
            print(self.__star)
    
    p1=People('23423423','alex',18,100000)
    p1.get_id()
    p1.get_star()#earth
  • 相关阅读:
    DOM对象模型接口规范中的四个基本接口
    js中几种实用的跨域方法原理详解(转)
    关于ie6/7下的z-index
    Mysql++学习(五)------专用SQL结构
    Mysql++学习(四)------模板查询
    Mysql++学习(三)------举个栗子
    Mysql++学习(二)------Mysql++简述
    Mysql++学习(一)------mysql编译安装
    epoll模型实例
    锁、页类型
  • 原文地址:https://www.cnblogs.com/happyfei/p/9598574.html
Copyright © 2011-2022 走看看