java面向对象的概念总结

来源:互联网 发布:山东大学威海知乎 编辑:程序博客网 时间:2024/06/04 17:55

学完java一直对面向对象这个概念有点模糊,所以就去看了 《java编程思想》这本书,这本书详细讲解了关于面向对象的编程思想。下面我用自己的语言去推理并总结一下。


抽象

首先我们编程的目的是为了解决实际问题,所以我们可以模拟出实际的问题源通过程序去解决这些问题。首先需要将现实问题的前提(也就是这个问题的参与者)抽象到程序内,java就提供了这种语法,可以将现实的每个个体用对象来表示,但是如果我们需要多个类似的对象:比如一条汽车生产线需要多个人,要是每个人(对象)我们都去一个一个抽象那就太繁琐了。所以java就提供一种编程思想,可以将一些具有相同属性和行为的对象归属为一个类,当我们需要创建一个对象的时候直接通过这个类型去获取就可以,也就是在java中声明一个类,并且该类中我们可以继续向类里面抽象他们(具有相同属性和行为的对象)的属性和行为,那我们就可以得到解决问题的参与者。


但是我们具体实施抽象这个过程需要遵守下面的3个特性

封装性

封装就是可以使程序员操作的最小单位(当然我们的目的是得到这个最小的单位)。所谓最小单位就是不能再拆分了,所以我们不知道这个最小单位里面是什么,这也很符合我们现实的逻辑。例如:当汽车生产线的某个员工为这部汽车添加了一个轮胎,我们仅仅看到的是他添加轮胎的行为,并没有看到他脑袋里面添加零件的思路(也不需要看到),同样的这位员工的老婆,孩子我们也不需要知道。。。基于上面的讨论,java中就实现了对对象的封装,如果这个对象的行为和方法对解决问题有帮助,那么我们就将这些行为和属性声明为public(视具体情况而定)的。

总的来说:封装就是程序员能操作的最小单位,为了得到这种单位我们需要去封装,如果此单位的某个行为对解决问题有用则将它展现出来(public)。

继承性

继承性出来的目标就是为了简化程序员的代码量,例如:汽车生产线上有负责装轮胎的,有负责刷漆的等等。我们要是一一设计出一个类。一样还是很繁琐。所以我们可以将这些类所共同表现出来的特征来放到一个共有的类中pesron中,在这个类中我们可以将这些共同属性或者行为放入person中比如name age,eat()等等(可能有的人就觉的每个人的名字也不同啊,请注意这里说的是类并不是具体对象)。而负责装轮胎的员工类tireWoker可以继承这个person类从而可以继承这些共有属性,而他们的特有属性和行为可以添加到tireWoker类中。

总的来说:继承是为了减少程序员的书写代码量和实现多态性。

多态性

封装性和继承性是我们对抽象个体的静态抽象(就是只是将他们放到那里,并没有实际操作),而多态性则体现在对象实际执行某个行为所展现出的不一样的状态:例如:当涉及的是一个对象:吃饭这个行为,当你很饿的时候你是狼吞虎咽的吃,当你不是很饿的时候是细嚼慢咽。当涉及到一类对象的时候:女生通常是 优雅的吃饭,男的则是不太注意形象。。

总的来说:一个对象接受不同请求而执行相同行为会展现出不同的结果也就是java中的编译时多态重载,一类对象(注意有统一父类也算一类对象)接受相同请求得到不同结果也就是java中的运行时多态重写。




以上的都是个人的观点和理解,欢迎各位朋友提出质疑和评论。



原创粉丝点击