OOP的三大特性:封装、继承、多态

面向对象的三大特性:封装,继承,多态

1.封装

封装就是使用特殊的语法,对成员属性和成员方法进行包装,达到保护和隐藏的目的;
但是一定注意,不能把成员全部封装死,就失去意义了;
被封装的成员主要是供类的内部使用,是限制了访问的权限,并不是完全不让访问;
被特殊语法封装的成员,会有不同的访问的权限。

正常来说在类的外部不能操作受保护的成员:_成员 ,但是python中可以

封装的级别

封装的级别:
    成员   ==> 公有的 public
    _成员  ==> 受保护的 protected(约定俗成,而python没有具体实现)
    __成员 ==> 私有的 private
公有的 public 受保护的 protected 私有的 private
在类的内部 OK OK OK
在类的外部 OK No(python可以) No

封装的实现

公有的封装:
    定义:默认定义的成员都属于公有成员
    特征:公有的成员可以在任何位置进行访问和操作
受保护封装:
		定义:在成员名称前面加一个下划线 _成员名称
		特征:受保护的成员和公有成员一样可以在任何位置进行访问,但是一般不要随便访问和操作受保护成员
私有的封装:
		定义:在成员名称前面加两个下划线 __成员名称
		特征:私有的成员只能在当前类的内部去访问和操作,不能在类的外部进行操作

###查看对象的成员

print(a.__dict__)
#打印出对象a的所有成员信息,type为字典
print(Person.__dict__)
#打印出Person类的所有成员信息,type为字典

在python中给成员进行私有化,其实就是改了成员的名字,并不是真正的私有化:

​ __成员 ==> _类名__成员

(所以在类的外部不能操作,因为名字改啦,找不到它啦)

#可以使用使用特殊的语法获取私有成员
#Person为类,a 为对象,__age为私有成员
print(a._Person__age)

2.继承

在面向对象中,一个类去继承父类,那么这个类就拥有了父类中的所有成员(除了私有成员)

继承要遵循 “ is - a ” 的关系,不要瞎继承

继承的概念和意义:

  • 概念:

    • 被其它类继承的类,这个类称为 父类 也叫做 基类 或者 超类
    • 继承其它类的类,这个类称为 子类,也叫做 派生类
  • 意义:

    提高代码的重用性,建立新的类与类的关系,方便其它逻辑的操作

###继承的语法格式:

class 父类():
    pass

class 子类(父类):
    pass

继承的特征:

【子类继承父类后的大部分操作,和对象被类实例后的操作是类似的,比如说是引用成员而不是复制成员、可以重写方法、可以定义新方法等等】

  • 在不指定继承的父类时,所有类都继承自object类(系统提供)

  • 子类继承了父类后,就拥有了父类中的所有成员包括魔术方法(除了私有成员);

  • 子类继承父类后,并不会把父类的成员复制给子类,而去引用

  • 子类继承父类后,重新定义了父类中的方法,这种叫做重写

  • 子类重写父类的方法后,依然可以使用super().父类方法名()的方式调用父类的方法

    super().父类方法名()
    
  • 子类中如果定义了父类中不存在的方法,称为对父类的扩展

  • 子类调用父类的方法时,如果该方法有参数要求,也需要传递参数

  • 一个父类可以被多个子类继承,还可以存在链式继承 。

    • 链式继承:A类继承了B类,B类继承了C类,C类继承了D类…

单继承和多继承:

单继承:

单继承:一个类只继承一个父类的方式。


                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值