你真的了解对象吗?
哈哈,本篇博文不是关于男女情感的哦,而是我们寄几创建出来的对象呢!那就让我们进入正题吧。
本篇文章主要讲述的是关于面向对象的知识点:
面向对象和面向过程的区别
类和对象
1.面向对象和面向过程的区别
在我们还未学习java前,还没了解什么是面向对象编程,大多都是面向过程编程。
试想一下,假如一个项目经理要求你去开发一个项目,当你还没了解到对象时,你会用面向过程去完成,各种方法环环相扣,这样看似没有问题,但当经理要求在原来的基础上修改规格时,你可能只对你的程序修改了一点点(这是好的情况),但也不免会修改很多(这时你就会烦躁,想***)。
当然它的优点是对于业务逻辑比较简单的程序可快速开发,缺点是元素之间的耦合度太高,扩展力差,环环相扣,也没有独立体的概念,不能达到组件复用的效果,会导致代码较多。
如:
rotate(shapeNum){ //旋转360°} playSound(shapeNum){ //播放}等等方法
而当你了解到面向对象编程时,你就会恨自己为啥不早点了解。当你面临上面的问题时,你有时不需要动到已经测试好的程序就可以达成新目标,面向对象的适应性和可扩展性可以让你在面向修改时不会太痛苦。
如:
class Square{ rotate(){ //旋转360°} playSound(){ //播放}}等等类体
它的优点是耦合度低,扩展力强,更容易解决更复杂的业务逻辑,组件复用性强。而他的缺点是前期投入成本较高,大量的系统分析和设计。
上面的陈述可能你会觉得枯燥,难理解,别慌,下面再举一个例子说说两者的区别。有一个人去一个餐厅吃饭,他点了一个蛋炒饭,等到炒好后他加了一个要求:我只要饭不要蛋。(小朋友你是不是有很多的问号???)这时店家很不解,心想我难道要把蛋炒饭里的蛋一个一个挑出来?
而这时又有一位顾客点了一份盖饭,等端上来时他也提了一个要求:我只要饭不要菜。(????)店家就很简单的把菜和饭分开来。
这里的蛋炒饭就是我们上面所说的面向过程,盖饭就是面向对象。
2.类和对象
谈到对象,你可能会心头一酸,但此对象非彼对象。万物皆对象,在我们的周围,到处都是对象,它可能是人,动物,物体等等等等,同样在我们的java中也是真实存在的,对象是已知的事物,对象也会执行动作(狗会叫,猫抓老鼠等等)。
对象本身已知的事物称为实例变量,它们代表对象的状态(数据),且该类型的每一个对象都会独立的拥有一份该类型的值。所以你也可以把对象当作为实例。
对象可以执行的动作称为方法。在设计类时,你也会设计出操作对象数据的方法,对象会带有读取或操作实例变量的方法。(如:闹钟对象会有个变量来保存响铃时间,且会有getTime(),setTime()这两个方法来存取改时间。
所以说对象带有实例变量和方法,但他们都是类设计中的一部分。
类不是对象,是用来创建他们的模型
类是对象的蓝图。它会告诉虚拟机如何创建某种类型的对象。根据某类创建出来的对象都会有自己的实例变量。(如你可以使用按钮类来创建出许多大小,颜色,文字不同的按钮)
类在现实世界中是不存在的,是一个模板,是人类大脑思考抽象的结果,它代表了一类事物(对象A与对象B之间具有共同特征,进行抽象总结出一个模板,这个模板被称为类)。
类实例化就是对象,对象抽象出来就是类。
举个栗子:对象就好像通讯簿中的一笔数据。
通讯簿的每张卡片都有相同的空白字段(实例变量)。填入新的联络人就如同创建新的实例(对象),填入卡片的数据代表联络人的状态。
这个卡片类上的方法就是你会对卡片做的事情:getTel(),changeAddress(),deleteCard()等。
所以每张卡片能够执行相同的动作,但取出的结果应该是依每张卡片各自独立的。
你get到了吗?上面的陈述如有错误请指出哦。