什么是面向对象?

对函数的封装、万物皆对象

一、面向对象的发展史

想要了解面向对象就要从它的起源谈起,追溯到20世纪60年代挪威计算机中心发布的simula语言,它首次引进了类的概念和继承机制

然后在70年代CLU、并发Pascal、Ada和Modula-2等语言支持数据和操作封装

到了1972年Palo Alno研究中心(PARC)发布了Smalltalk 72,其中正式使用了面向对象这个术语,但这个时候还并不算完整

到了后来PARC发布了Smalltalk 72,76和78等版本,直至1981年推出该语言完善的版本Smalltalk 80。迄今绝大多数面向的基本概念及其支持机制在Small talk 80中都已具备。他是第一个完善的、能够实际应用的面向对象语言。

从20世纪80年代中期到90年代,是面向对象语言走向繁荣的阶段。其主要表现是大批比较实用的面向对象编程语言的涌现,例如 C++、Objective C 、Object Pascal、CLOS(Common Lisp Object System)、Eiffel和Actor等。

 

二、面向对象的基本语法

定义类:用class来定义一个类名

类名要用大写开头

class Dog:

就比如有一条狗叫旺财会吃饭

class Dog:
  def __init__(self,name,age):
  self.name=name
  self.age=age
  def run(self):
    print('吃饭')
s1=Dog('旺财',18)
s1.run()

 

三、魔法函数

1.__init__

所有类的超类object,有一个默认包含pass的__init__()实现,这个函数会在对象初始化的时候调用,我们可以选择实现

2.__str__

直接打印对象的实现方法,__str__是被print函数调用的,如果不是要用str()函数转换,我们可以直接print的对象都是实现了__str__这个方法的

3.__del__

这可以说是一个析构器,或者回收器,在对象引用数降到0时执行,有时可能还需要等一会再执行,当对象不在运行时会调用这个函数

 

四、self的使用

self代表类的实例,但并非类

 

五、面向对象的三大特征

1.封装

 通俗的讲叫隐藏就比如保存个人信息的库自己能随便修改吗?,当然不能

class People:
    name = "老王"
    age = 20
    def eaf(self):
        print("吃饭")

就比如上面的这一串代码中的age(年龄)能随便修改吗我们就要把它进行封装

class People:
    name = "老王"
    #我们可以用简单粗暴的方式“__”直接将他隐藏
    #但我们这样做就无法查看和修改
    __age = 20
    def eat(self):
        print("吃饭"#查看
    def get_age(self):
        print(self.__age)
#进行修改
    def set_age(self , newAge):
        self.__age = newAge
a = People
a.get_age
#我们可以在这个地方加入一些判断进行身份验证有权限的才可以修改
a.set_age

 

2.继承

继承简单的来说就是“你的就是我的,我的还是我的”

#定义第一个类
class Dog:
    name = "老黄"
    def jiao(self):
        print("汪汪汪")
#定义第二个类
class Dog_(Dog):
    name = "小黄"
#继承之后第一个类的东西(除了封装的东西)将给第二个类
a = Dog_()
#这里是可以调用的
print(a.jiao)
#但我查看name是优先查看自己的

 

3.多态

最终多态体现为父类引用变量可以指向子类对象。

多态的定义格式:就是父类的引用变量指向子类对象

父类类型  变量名 = new 子类类型();

变量名.方法名();

 

posted on 2021-08-25 09:47  一纸荒年003  阅读(68)  评论(0)    收藏  举报