怎么理解面向对象?(理解要它的基础概念):加密服务器地址怎么查询

時間:2024-01-23 02:52:51 作者:加密服务器地址怎么查询 熱度:加密服务器地址怎么查询
加密服务器地址怎么查询描述::

在文章开始之前先说一句,小编最近整理了一套Python学习教程,有需要的小伙伴,记得关注小编头条号,私信学习即可免费领取一套Python学习教程哦

理解面向对象,首先理解要它的基础概念:

面向对象是将现实问题构建关系,然后抽象成类 ( class ),给类定义属性和方法后,再将类实例化成实例 ( instance ),通过访问实例的属性和调用方法来进行使用。

在不同的语言中,对象的定义范围不同。在 Python 中 类 和 类的实例 都称为对象 ( Object ),因为 Python 的类是更顶级的 type 实例化后的对象;而在 Java 等静态语言中,一般把类的实例称为对象。

理解了理论知识后,接着通过例子,再理解面向对象的三大特征:封装、继承、多态。

下边我们把女娲造人的神话故事用面向对象来叙述一遍:

假设我们是女娲(程序设计者),我们突然有个想法,想造一群和自己差不多的小人,小人需要有男女两种性别,外观和行为也有一些差异。那首先我们分析出,不管什么性别,都应该有四肢,所以我们先仿照自己的构造,在脑海中构思泥人的样子(抽象成基类),然后先赋予泥人一些共有的行为(定义类的实例方法):

class Human(object) def __init__(self, name='泥人')  有个名字,有两只手,两条腿 selfname = name selfhands = 2 selflegs = 2 def introduce_self(self)  介绍自己 print('我是s'  selfname)

然后我们先捏3个泥人,并给他们取了不同的名字:

a = Human('大强子') b = Human('二狗子') c = Human('三愣子')

我们让其中一个人介绍自己:

aintroduce_self()我是大强子

然后我们继续完成想法,需要给泥人增加两种性别,并且异性之间能结婚,我们开始在刚才泥人模型的基础上(继承于基类),构思出两种性别的泥人的区别(设置不同的属性),然后让他们都可以工作,但工作的内容不一样(调用相同的方法出现不同结果,是多态性),并决定让男人可以娶女人(将这个行为定义为男人的方法)。

import randomclass Female(Human) def __init__(self, name)  调用父类的初始化方法,依然有名字、两只手、两条腿 super()__init__(name)  头发和力量进行随机取值 selfhair = randomrandint(3, 5) selfpoer = randomrandint(1, 3)  是否已婚 selfmarried = False def ork() print('s采摘了一些果子'  selfname)class Male(Human) def __init__(self, name) super()__init__(name) selfhair = randomrandint(0, 2) selfpoer = randomrandint(2, 5) selfmarried = False def ork() print('s出去打猎了一天'  selfname) def marry(self, other)  判断自己或对方是否已结婚,否则抛出异常 if selfmarried is True or othermarried is True raise ValueError('法律不支持多次结婚')  判断对方是否是女性,否则抛出异常 if instance(other, Female) selfmarried = True othermarried = True else raise TypeError('法律不支持同性结婚')

然后我们就可以让小人活动起来:

a = Male('大强子') b = Male('二狗子') c = Female('翠花') for h in [a, b, c]  调用父类的方法 hintroduce_self()我是大强子我是二狗子我是翠花 for h in [a, b, c]  多态性使相同的方法产生不同的结果 hork()大强子出去打猎了一天二狗子出去打猎了一天翠花采摘了一些果子 amarry(c) amarriedTrue cmarriedTrue bmarry(c)ValueError 法律不支持多次结婚 bmarry(a)TypeError 法律不支持同性结婚

看到这里你应该会发现,面向对象是更接近人类思维模式的编程思想,在这种可以具象化的需求中,可以极大简化其中的逻辑,让我们关注于设计对象的属性和方法。

虽然你确实可以通过写一长串函数来达到同样的效果,那实际是另一种编程思想:面向过程,通过函数实现过程中一系列的功能,最后按顺序组合后达成需求。

这并不是面向过程弱于面向对象,而是在不同的需求中要选择最合适的设计思路,比如在设计顺序执行的脚本中,明显面向过程的设计思路是更加适合,如果我们还去定义类就有些累赘了。

这也是题主提出的疑问,正是因为没有遇到适合面向对象的需求。

如果是拥有复杂关系的需求,我们就应该尽可能将互相有关联的行为抽象成类,比如每一个网页,网页中每一个组件 等等。实际上面向对象帮助我们在十万行代码的大型项目中,仍然可以游刃有余,正因为如此,才能发展为目前应用最为广泛的编程思想。

站長聲明:以上關於【怎么理解面向对象?(理解要它的基础概念)-加密服务器地址怎么查询】的內容是由各互聯網用戶貢獻並自行上傳的,我們新聞網站並不擁有所有權的故也不會承擔相關法律責任。如您發現具有涉嫌版權及其它版權的內容,歡迎發送至:1@qq.com 進行相關的舉報,本站人員會在2~3個工作日內親自聯繫您,一經查實我們將立刻刪除相關的涉嫌侵權內容。