关于面向对象及封装性、继承性、多态性的理解

1.基本概念

1.1面向对象的基本思想:

当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,最终让问题得到解决。

1.2面向过程的基本思想:

当解决一个问题的时候,面向过程会把事情拆分成一个个函数和数据(用于方法的参数) 。然后按照一定的顺序,执行完这些方法(每个方法看作一个过程),等方法执行完了,任务就解决了。

1.3 举例说明二者区别

同一个问题: 洗衣机里面放有脏衣服,怎么洗干净?

面向过程的解决方法:
1、执行加洗衣粉方法;
2、执行加水方法;
3、执行洗衣服方法;
4、执行清洗方法;
5、 执行烘干方法;
以上就是将解决这个问题的过程拆成一个个方法(是没有对象去调用的),通过一个个方法的执行来解决问题。

面向对象的解决方法:
1、我先造出两个对象:“洗衣机”对象和“人”对象
2、针对对象“洗衣机”加入一些属性和方法:“洗衣服方法”“清洗方法”、“烘干方法”
3、针对对象“人”加入属性和方法:“加洗衣粉方法”、“加水方法”
4、然后执行
人.加洗衣粉
人.加水
洗衣机.洗衣服
洗衣机.清洗
洗衣机.烘干
解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。

2.类、对象、实例关系?

对象对象的一个实例,有状态和行为。

例如,一条狗是一个对象,它的状态有:名字、年龄、品种;
行为有:摇尾巴、坐下、打滚等。

是一个模板,它描述一类对象的行为和状态。

2.1代码的角度对比三者之间的联系

在这里插入图片描述
通过Dog类,让Python创建一条 名 为 “ 王 可 可 ” , 年 龄 为 “ 6 ” 的 小 狗 名为“王可可”,年龄为“6”的小狗 6。当解释器执行到这行代码时,Python使用实参 “ 王 可 可 ” 和 “ 6 ” “王可可”和“6” 6调用__init__()方法,init()方法就创建一个表示特定小狗的实例,并且用提供的值来设置属性name age。
这里所创建的6岁王可可和34岁王思聪就是实例,同时他们可以叫做对象

3.0 面向对象三大特性

3.1面向对象三特性之“封装性”

封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
在这里插入图片描述
这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

3.2面向对象三特性之“继承性”

继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过 “继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用父类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。
在这里插入图片描述
这就是继承的几种形式,所谓单重继承,其实就是子类自动共享一个父类的数据机构和方法,所谓多重继承,其实就是子类自动共享多个父类的数据结构和方法。

3.3面向对象三特性之“多态性”

多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,那些操作可以通过相同的方式予以调用。
在这里插入图片描述
同样的一个“打印”的操作,使用不同的打印机就会呈现出不同的打印效果。
所以可以这样理解:多态是同一个行为具有多个不同表现形式或形态的能力。

有帮助的话请大家点赞支持以下❤

猜你喜欢

转载自blog.csdn.net/weixin_43694096/article/details/123346651