面向对象的理解

来源:互联网 发布:js遍历jsonarray对象 编辑:程序博客网 时间:2024/06/15 19:41

本文借鉴了好几个博主的内容,所以是转载。

什么是面向对象?
用白话表示就是,你要面对的事物是什么?
普通人面对两个人在走路,他们的面向对象是人类,走路,谈话。
生物学家面对两个人在走路,他们的面向对象是两堆蛋白质,移动,发出声音
生化学家面对两个人走路,他们的面向对象是两个细胞群,在蠕动,发出声音
。。。
。。。
面向对象就是看待事物的出发点不同,对看到的、听到的、想到的事物进行抽象分类。
抽象就是:人类,蛋白质,细胞群。。。
然后具体的分子类,然后子类的实现。。。

总结:面向对象就是对事物的划分!


面向对象是基于万物皆对象这个哲学观点. 把一个对象抽象成类,具体上就是把一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事物的算法和数据结构封装在一个类之中,程序就是多个对象和互相之间的通信组成的.

       面向对象具有封装性,继承性,多态性.封装隐蔽了对象内部不需要暴露的细节,使得内部细节的变动跟外界脱离,只依靠接口进行通信.封装性降低了编程的复杂性. 通过继承,使得新建一个类变得容易,一个类从派生类那里获得其非私有的方法和公用属性的繁琐工作交给了编译器. 而 继承和实现接口和运行时的类型绑定机制 所产生的多态,使得不同的类所产生的对象能够对相同的消息作出不同的反应,极大地提高了代码的通用性. 

       总之,面向对象的特性提高了大型程序的重用性和可维护性.

在我们的身边,每一种事物都是一种对象,统筹一句话概括就是,对象是事物存在的实体。例如:电视、汽车、  书桌、楼房包括我们人类自身都是一种对象。对象的话又划分为两种,即静态和动态两部分。静态:顾名思义,指的是不能动的部分。就拿我们自  身来说,每个人的你年龄、性别、身高、体重等都属于静态。而这些特征都可概括为属性,所有的对象都具备属性。动态:即具备这些属性的人可能  做出的行为和动作(微笑、哭泣、行走、奔跑等)。人类通过探讨对象的属性和观察对象的行为来了解对象。

所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装。封装是我们所说的面相对象编程的特征之一。除此之外还有继承和多态。继承有点类似与我们生物学上的遗传,就是子类的一些特征是来源于父类的,儿子遗传了父亲或母亲的一些性格,或者相貌,又或者是运动天赋。有点种瓜得瓜种豆得豆的意思。面向对象里的继承也就是父类的相关的属性,可以被子类重复使用,子类不必再在自己的类里面重新定义一回,父类里有点我们只要拿过来用就好了。而对于自己类里面需要用到的新的属性和方法,子类就可以自己来扩展了。当然,会出现一些特殊情况,就是我们在有一些方法在父类已经定义好了,但是子类我们自己再用的时候,发现,其实,我们的虽然都是计算工资的,但是普通员工的工资计算方法跟经理的计算方法是不一样的,所以这个时候,我们就不能直接调用父类的这个计算工资的方法了。这个时候我们就需要用到面向对象的另一个特性,多态。对,就是多态,我们要在子类里面把父类里面定义计算工资的方法在子类里面重新实现一遍。多态包含了重载和重写。重写很简单就是把子类从父亲类里继承下来的方法重新写一遍,这样,父类里相同的方法就被覆盖了,当然啦,你还是可以通过super.CaculSalary方法来调用父类的工资计算方法。而重载就是类里面相同方法名,不同形参的情况,可以是形参类型不同或者形参个数不同,或者形参顺序不同,但是不能使返回值类型不同。

原创粉丝点击