面向对象的简单理解

                          面向对象的理解

    在一些资料中都有讲解但是只是逻辑思维有的有些乱,比如一些基本概念都不说明就只做最直接介绍,导致理解的有些麻烦,(个人理解,大神勿喷哈),根据自己的理解来总结一下(ps:我是个没有水平的人呀写的不好,大体看看吧,有错误还请大神批评面向对象的简单理解

一:首先我们先来理解几个概念从而理解面向对象:
                                           (1)面向对象是什么?

                                           (2)面向对象的关系是什么?

                                           (3)对象是什么?      

                                           (4)面向对象与类的关系              

                                           (5)面向对象基本原理的三块基石是什么?以及一些细节概念


(1)面向对象是什么?

          就是程序员认识客观世界的一种思想,是程序员描述客观世界中事物纵向演进(继承)和横向联系(对象组合

的基本世界观。(ps:就是一种思想)

(2)面向对象的关系是什么?

       1. 在面向对象看来,世界由两种关系构成:

1. 纵向演进:体现的是物种的繁衍生息,生生不息------继承

2. 横向联系:多个物种(或多个种群)在繁衍生息的过程中,不断的斗争和融合

  螳螂捕蝉  ---- 对象组合


(3)对象是什么:

         对象就是客观世界的一切实体(群体中的一个,个体),对象之间的斗争和融合构成了纵向演进和横向联系这两种关系.

         实体是什么:就是一切存在的具体事物,包括客观存在以及人类臆想的事物都是实体

               实体内部分成两个部分:

               状态

               行为

            并且通过行为可以影响状态的改变

         通过行为可以影响状态的改变,两重含义:

1. 一个实体自身的行为影响自身状态的改变(行为影响自身状态)

例如:崔照旭

     状态:饿了

     行为:吃包子

2. 一个对象的行为,影响了其他对象状态的改变:

例如:老师刚给你们讲课,把你们从清醒状态,变成昏睡状态

     猎人狩猎行为影响到动物生命状态的改变

 

(4)面向对象与类的关系 ?

   如何由对象抽象成类:

归纳对象的共性,编写到一个语法单元中,形成类

对象共性包括 状态的共性和行为的共性

共同的状态,转换成类的属性------属性就是独立于方法的全局变量

共同的行为,转换成类的方法-------与行为对应


对象是类的一个实例。可以将类看做是对象的模板,而对象可以看做是按照该模板制造出来的标准件。

面向对象的简单理解         

   类别:
物以类聚,人以群分。类就是具有共性的对象集合。任何对象,只要存在共性就可以分为一类.
   类型:
对象是类的一个实例。可以将类看做是对象的模板,而对象可以看做是按照该模板制造出来的标准件。

类型决定行为,定义一个新的类,就相当于工程中增加了一种新的数据类型。例如,java系统提供了一个String类,我们就有了“字符串”数据类型;如果我们自己定义了一个Person类,那么就相当于,我们的工程中增加了一个Person数据类型。  

(5)面向对象基本原理的三块基石是什么?以及一些细节概念 

  (1)封装
  (2) 继承

  (3) 多态

封装:

封装:是将数据(属性)和对数据的操作(方法)屏蔽在一个逻辑单元(类)中,对外界提供有限的访问权限的一种机制。
封装:包括两层含义:
   语法上:封装了数据及其处理。
   语义上:封装了可变性,不变性和复杂性。
类是封装的基本手段,封装的目的:在于类别的发现.找到同一类事物,描述它们的共性!

找到事物,封装其属性和行为

继承:

继承体现的是事物的纵向演进,是对事物的重新分类的过程,只有在分类学有意义的时候,才可以使用继承.从这个角度来说继承树上的每个节点,都是一个新的种群.

如果单存为了代码的复用,没有必要继承.

面向对象的简单理解

*******子类可以继承父类的一切实例成员,请牢记这一点.**********

多态:


多态:语法实现上是基于重载机制来完成的。
多态的类型分为如下两种
1.宏观多态:

一个接口(后面介绍)各自实现.


由于继承本质上是对事物的重新分类,这样同一物种的不同种群,为了适应各自的生存环境,就要用不同的方式实现继承自祖先的方法. 比如继承自同一动物祖先的鹰,鱼和老虎,在行动方法上各不相同.
2.微观多态
微观多态,体现的是同一动物,针对外界不同的刺激,会做出不同的反应.比如,老鼠见到猫和见到奶油的表现是不一样的体现到程序中,就是同一个类内部的方法重载。

指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

eg;上课与屌丝坐在一起就想离他远点和与帅哥在一起就想多坐会这就是多态体现.


(*)接口:


     (*)接口,就是用来定义软件需要做什么的。考虑接口的时候,在于对问题的宏观分析,而不是考虑具体实现的细节。
接口只规定做什么,至于怎么做,则由其实现类完成,因此,接口中只有方法的定义,而没有方法体.
     (*)在实际的应用中,接口中定义的方法,应该是,该类事物中,外界可以使用的全部方法。

     (*)接口与实现类的关系,很类似于酒店掌柜与伙计的关系。比如说,掌柜要思考的问题是管理好酒店,为此,每天要保持地板的清洁。但是,他不会自己去擦,只是定下了每天要擦地板这件事情。至于怎么去擦,那是由伙计去完成的。至于伙计是从东往西擦,还是从南往北擦,这个,掌柜是不应该去管的。

总结:
     面向对象牵扯的概念很多,需要自己在客观的世界中找到自己熟悉的具体参照物,其实就是一种思想,一种描述客观世界的思想