zoukankan      html  css  js  c++  java
  • python学习67-面向对象-封装

                      封装

    1.什么是封装?

    根据名字寓意为:把一个东西装起来,然后密封,类似这样的面向对象的编程为封装。

    真正的封装是明确的区别内外,只能在内部用,外部无法调用。

    2.

    举例:

    class Car:
        _star = 'benchi'     # "_"表明是隐藏属性,不能在外部使用(不代表无法调用到)
        __star1 = 'baoma'    # "__"python给自动重命名,命名为"_Car__star1"
        def __init__(self,name,type):
            self.name = name
            self.type = type
        def get_type(self):
            print('%s是%s类型的车' % (self.name,self.type))
    
    c1 = Car('奔驰E600','大型高档轿车')
    c1.get_type()
    
    print('=========================')
    print(c1._star)
    print(c1._Car__star1)

    运行结果:

    奔驰E600是大型高档轿车类型的车
    =========================
    benchi
    baoma
    
    Process finished with exit code 0

    3.意义

    第一个层面的封装,就是把东西装进麻袋。  类就是一种麻袋。

    第二个层面的封装就是两个约定,单下横线 _,双下横线 __。

    第三个层面的封装明确区分内外,外部无法直接调用。

    举例:

    class Car:
        _star = 'benchi'     # "_"表明是隐藏属性,不能在外部使用(不代表无法调用到)
        __star1 = 'baoma'    # "__"python给自动重命名,命名为"_Car__star1"。理论上对外部隐藏了
        def __init__(self,name,type):
            self.name = name
            self.type = type
        def get_type(self):
            print('%s是%s类型的车' % (self.name,self.type))
            
            
        def get_star(self):           # 接口函数
            print(self.__star1)             # 内部调用
    c1 = Car('奔驰E600','大型高档轿车')
    
    c1.get_star()

    运行结果:

    baoma
    
    Process finished with exit code 0

    4.从根本意义上讲python没有从实际上限制你的访问。所以说没有绝对的封装

    5.python中关于OOP的常用术语

    ----封装/接口

    ----合成

    ----派生/继承//继承结构

    ----泛化/特化

    ----多态

    ----自省/反射

  • 相关阅读:
    指针
    初级程序员面试不靠谱指南(七)
    初级程序员面试不靠谱指南(六)
    Hadoop 中利用 mapreduce 读写 mysql 数据
    Mapreduce的文件和hbase共同输入
    mapreduce多文件输出的两方法
    mapreduce中一个map多个输入路径
    GDB介绍
    超强的指针学习笔记
    iOS开发之Appstore篇——版本更新
  • 原文地址:https://www.cnblogs.com/liujinjing521/p/11793221.html
Copyright © 2011-2022 走看看