面向对象学习笔记

面向对象

写在前面

面向过程(POP):以过程为中心,写步骤。分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。

优点:性能好,开销小(内存量小)。

缺点:没有面向对象易维护、易复用、易扩展。

面向对象 (OOP):以对象为中心,即把事物按照共性特征的对象整体化成为一类,继而描述解决问题步骤中的行为。

优点:易维护、易复用、易扩展。

缺点:需要实例化,开销大,性能低。

对象:

对象有属性和行为两方面特征。

万物皆可对象!每一个特殊的个体都可以看成是一个对象。法拉利是一个对象,他有车型、驱动系统这两个属性,有行驶这个行为。兰博基尼说巧了,俺也一样。于是他们和千万兄弟姐妹被称为车类。

类:

是把许多对象根据共同的属性和行为抽象为一个整体。如车类、人类…对象可以抽象为类,互逆的,类实例化就是对象。也可以把类看成是一个模板。实例化就是套模板的过程。

import math
class Circle1:
    def __int__(self, r):##属性
        self.r = r
    
    def square(self):##行为
        print(self.r*self.r*math.pi)
circle = Circle1(2)##实例化
circle.squre()

面向对象三特征:

封装:

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装原则:将不需要对外提供的内容都隐藏起来、把属性都隐藏,提供公共方法对其访问。

class Account:
    def __int__(self, account):
        self.__c = account

    def __password__(self):
        print(f"不能修改")

继承:

在面向对象的程序设计中,允许在已有类的基础上通过增加新特征而派生出新的类,这称为继承。其原有的类称为基类(base class),而新建立的类称为派生类(derived class);

子类可以得到父类的属性和行为

import math
class Shape:##父类
    def __int__(self, name):
        self.name = name

    def square(self):
        print(f"面积是")

    def length(self):
        print()
class Circle(Shape):##子类
    def __int__(self, r):##新的属性,但原来名字的属性也会被继承。
        self.r = r

    def square(self):
        print(self ** 2 * math.pi)


class Rectangle(Shape):
    def __int__(self, width, height):
        self.a = width
        self.b = height

    def square(self):
        print(self.a * self.b)

多态:

多态是同一个行为具有多个不同表现形式或形态的能力,例如:黑白打印机和彩色打印机相同的打印行为却有着不同的打印效果。

  • 对象类型和引用类型之间存在着继承(类)/ 实现(接口)的关系;

  • 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

  • 如果子类重写了父类的方法,最终执行的是子类覆盖的方法,如果没有则执行的是父类的方法。

    class WhoSay:
        def say(self,who):
            who.say()
    class CLanguage:
        def say(self):
            print("调用的是 Clanguage 类的say方法")
    class CPython(CLanguage):
        def say(self):
            print("调用的是 CPython 类的say方法")
    class CLinux(CLanguage):
        def say(self):
            print("调用的是 CLinux 类的say方法")
    a = WhoSay()
    #调用 CLanguage 类的 say() 方法
    a.say(CLanguage())
    #调用 CPython 类的 say() 方法
    a.say(CPython())
    #调用 CLinux 类的 say() 方法
    a.say(CLinux())
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值