一、什么是面向对象
面向对象程序设计(Object-oriented programming,OOP)不仅指一种程序设计方法,更是一种程序开发方式。
重要的面向对象编程语言包含Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift)、C#、Perl、Ruby 与 PHP等。
在编程解决问题时,面向对象程序设计开发方式关注的是“谁来做”——即谁来解决问题。
二、面向对象编程中的主要概念
1、类与对象
类(class):定义了一件事物的抽象特点。一般的,类定义了一个事物的属性和它可以做到的行为。编程时,我们所定义的类包含了数据的形式以及对数据的操作。举例来说,“狗”这个类包含了狗的一切基础特征(属性/形式),即所有“狗”都共有的特征或行为,如狗的繁殖、毛皮颜色和吠叫的能力。
通俗地说,类是具有相同属性和方法的对象的集合。“人”可归为一个类,各种动物各有它们所属的类,“大学”可归为一个类,等等。
方法:在类中定义的函数。
在Python中通过关键字class实现类的定义,语法如下:
在块block_class处写入类的成员变量(特征/属性/形式)及函数(操作)。如下是一个类dog的定义及其实例化:
对象(object):是类的实例,即实例化后的类,如上代码中的black_dog就是一个实例化的对象。black_dog是一只具体的狗。dog类是抽象化的狗,指所有的狗。
在上述代码中,可以看到类的方法和普通的函数有一个特别的区别——类的方法必须有一个额外的第一个参数名称,习惯上用self。self代表的是类的实例。
类有一个名为init()的特殊方法(构造方法),该方法在类实例化时会自动调用。其定义如下:
定义一个带构造方法的类:
类的私有属性与私有方法:
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs。
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。
代码示例:
执行以上程序输出结果为:
2、继承
继承(inheritance):指通过一个已有的类(称之为父类)定义另外一个类(称之为子类),子类共享父类开放的属性和方法。子类的对象除了是子类的一个实例,还是其父类的一个实例。
示例:
上述代码为单继承。同样的,一个子类也可以继承多个父类。同时,在上述代码中,在子类student中我们重新写了一个speak方法,这样会把父类people中写的speak方法覆盖。如果想重新使用父类的speak方法,可使用如下代码:
3、其他概念
多态(polymorphism):指不同的方法作用于不同对象,可以有不同的解释,产生不同的执行结果。
示例如下:
都是叫,但是叫的表现方式却大不相同。
领取专属 10元无门槛券
私享最新 技术干货