OOP思想 (面试!)看这篇就够了

本文详细介绍了面向对象编程的原理和特性,包括类、对象、封装、继承、多态等概念,以及Python中OOP的应用。面向对象是编程的重要思想,通过封装、继承和多态提高代码的复用性和可维护性。
摘要由CSDN通过智能技术生成

写在前面(Java同用,主要掌握思想)

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。但是在我们享受Python带来的编程乐趣之前,就必须要掌握OOP(Object Oriented Programming)面向对象程序设计思想,这样才能够更好的应用Python高级功能。下面和我一起全面的学习OOP。

类、对象:

具有相同特性(数据元素)和行为(方法)的对象的抽象就是类,类本质是一种数据结构。对象的抽象是类,类的具体个性化就是对象。
类的属性:它是对象的状态的抽象,用数据结构来描述类的属性,也称为成员属性。
类的方法:它是对象的行为的抽象,用操作名和实现该操作的方法来描述,也称为成员方法。
类的结构:在客观世界中有若干类,这些类之间有一定的结构关系。通常有下面两种主要的结构关系:

  1. 一般/具体结构称为分类结构,也可以说是is a关系。用来描述在继承中子类与父类的关系,即一个派生子类的实例化对象是其父类的一个”例子”。所以有”is a”的关系。
  2. 整体/部分结构称为组装结构,它们之间的关系是has a关系。”组合”是实现继承的方式之一,在”组合”继承中,一个子类可以有多个父类,即一个子类”has a”一个父类。

面向对象

面向对象(Object Oriented,OO),面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。在Python中一切皆对象,通过面向对象的思维,将现实世界的事物都抽象成为对象,将现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。而且,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。其中对象是类的集合,面向对象思维将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和可扩展性。
面向对象编程踏上了进化的阶梯,增强了结构化编程,实现了数据与动作的融合:数据层和逻辑层现在由一个可用以创建这些对象的简单抽象层来描述。
OO后来又扩展为OOA/OOD/OOP:
OOA(Object Oriented Analysis)面向对象分析:即根据抽象关键的问题域来分解系统。
OOD(Object Oriented Design)面向对象设计:是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。
OOP(Object Oriented Programming)面向对象编程:是一种程序设计范型,同时也是一种程序开发的方法,实现OOP的程序希望能够在程序中包含各种独立而又互相调用的对象,每一个对象又都应该能够接受数据、处理数据并将数据传达给其它对象,因此每个对象都可以被看作一个小型的”机器”,而整个程序系统就是由这些小机器相互协助、组合构建起来的。

面向对象的三个基本特征

面向对象无论是稳居编程语言的第一位JAVA来说,还是从扶摇直上的Python,它面向对象编程的基本特征不会变,也就是常说的:封装 、继承 、 多态。

封装

封装描述了对数据/信息进行隐藏的观念,它对数据属性提供接口(接口函数)和访问方法。在类的设计时,为数据提供了相应的接口,以免客户程序通过不规范的操作来存取封装的数据属性。

封装的目的:就是把客观事物抽象并封装成类,封装好的每一个类都是独立的,而由类实例化创建的对象亦是如此。对象之间只能通过 消息 这种通信结构来实现通讯。这样做能够实现:类自己的数据和方法只让可信的类或者对象操作,对不可信操作的进行信息隐藏。为类和对象中的方法、属性提供了安全的保障。
封装的作用:一个类就是一个封装了数据以及操作这些数据的方法的逻辑实体。在一个对象内部,某些方法或属性可以是私有的(实例化对象将类中定义的私有属性和方法个性化),它们不能被外界访问。通过封装,为对象内部的数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。即隐藏类的功能实现的细节,使代码模块化(松耦合、高内聚)。
封装的意义:一般的,我们会认为程序=数据结构+算法,在OOP中,因为封装的存在,我们会将这条等式转化为程序=对象+消息。

#fileName =encapsulation.py
#coding = utf8
_metaclass_ = type              #确定使用新式类;新式类必须继承Object基类,并且新式类提供了对类的方法和静态方法的支持。
class TestEncapsulation(object):

    def __init__(self):         #构造函数,在程序启动时自动调用,一般作为实例化对象的初始化
        self.statement = "Start"
        print(self.statement)

    def accessibleMethod(self):    #绑定方法,能在类外部被访问;绑定方法一定要有self形参,self表示类本身,用于传递当前类中的成员属性和方法,但是self不接收实参。
        print("You can access this method!",end='')
        print(self.statement)
        print("the secert message is:")
        self.__inaccessible()

    def __inacc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值