Java 对象和类

2019-10-08 09:08:04来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Java 对象和类

          

 

 

 

面向过程思想到面向对象思想的演变过程:

  在面向过程中,是以方法来进行组织代码的,然后方法之间的相互调用。这样场景在数据相对较少,方法相对较少的情况下,是没有问题的。但当应用程序庞大复杂时,一个根本完成不了,需要多人协作来进行开发时,这时就有问题了。

别人在不清楚你所写的功能代码的情况下是很难上手的,因为我们是以方法来进行组织代码的,别人需要把整个流程熟悉后,才能进行在之前的基础上进行开发(别人需要把每一个方法内部的实现细节都要了解,才能进行修改,否则很有可能把之前程序的逻辑性打乱,从而引发BUG。比如,之前的逻辑是A方法中调用了B方法,但是经过修改之后,又调用了C方法,导致整个逻辑就出现了问题。)

所以,以面向过程的思维进行大型开发时,程序的管理比较复杂,不易于程序的扩充;对于程序的可维护性比较低;

但是,在C语言中,有一个结构体的特性,可以把每一类型的变量存放到每一个结构体中来进行管理。比如,把车相关的变量存放到车的结构体中,把行车导航仪的相关的变量存放到导航仪的变量中。当变量使用时,使用结构体.变量来调用对应的变量。方法也类似的操作,封装到一个个的结构体中。

但是,这样还是存在缺陷的,比如,车相关的方法:启动的方法,需要调用启动相关的变量时,必须要调用封装启动变量的结构体,才能获取数据。在此基础上,就在思考,为什么不把车启动的变量和方法的数据封装到一起呢,这样明显更加具有条理性。

于是,把每一类型的数据封装到一起,这时,类的概念就出现了(C++,在C语言的基础做了升级)。这个就是面向对象的思维;

以类的方式组织代码后,之前1000个变量和1000个方法的代码结构就会变为n个类,这样管理程序的效率就能大大提高。同时,程序也变的更容易扩展。比如,在现在的功能之上,添加自动驾驶的功能时,只需要添加一个相关的类即可,原有的代码结构并不需要修改。其次,程序的开发分工更加合理,比如按照功能来进行分工,从而提高程序开发的效率;当出现人员变更时,新人只需要研究对应的功能即可,不需要把整个应用程序流程研究一遍才能上手,这样也大大降低程序的维护成本;

在选择面向过程开发,还是面向对象开发时,是分应用场景的,如果程序的逻辑比较庞大复杂时,选择面向对象。如果代码比较少,逻辑比较简单时,选择面向过程即可,没必要去选择面向对象。

 

面向过程思维和面向对象思维的对比

举例:

如何驾驶汽车?

面向过程:                              面向对象:

1、踩离合;                              1、驾驶员;

2、挂挡;                                2、汽车;

3、踩油门,放离合;                      3、驾驶员开汽车;

4、车走了;

面向过程属于线性思维,考虑的是第一步做什么,第二步做什么。。。。。,当事情比较简单时合适。但当事情变的复杂,需求他人的帮助下才能完成时,就需要面向对象的思维了。

面向对象思维来思考事情该如何做时,首先考虑这件事情中,包含有哪些对象,比如,有驾驶员和汽车两个对象,把如何驾驶汽车的多个方法封装到汽车对象当中,汽车直接调用即可实现。所以,在面向对象当中,是包含着面向过程,是对面向过程的高级封装;

面向过程:以事件为中心,强调的是做一件事的步骤;

面向对象:以事物为中心,强调的是由谁来做;

二者最终的目的一样,但方式不同;

面向对象思想编程 总结:

0)编程的本质:

把现实中存在的逻辑,使用代码来实现;现实中逻辑,就是使用语言了进行表达的。

1)面向对象编程(OOP)的本质:

以类的方式组织代码,以对象的方式封装数据(以面向对象的思维组织代码,封装数据)。

2)什么是对象:

对象是具体的事物,一类事物具体的一个实例;

举例:张三、李四就是人的对象;

什么是类:

是对对象的一种抽象(抽象,抽出像的部分),一类事物的一个抽象;

举例:人、动物、汽车,都是类;

 

在编程思想中,必须先定义类,才有对象,对象是java的核心;

抽象的两个方面,也就是一个类包含的两个部分;

1、静态属性------>成员变量;

2、动态行为------>成员方法;

每一个对象都有自己的属性,属性值一般和另一个对象的属性是不一样的。

调用一个方法,必须先new一个对象,然后对这个对象来调用这个方法。针对不同对象调用的方法,它的作用域是不一样的。

类是对象的模版,new出来的对象,都共享类的模版;

3)面向对象也叫做面向类的编程:

作为面向对象,在处理业务逻辑时,不应该先考虑第一步做什么,第二部做什么;

考虑:

1、在问题当中,有哪些类,哪些对象;

2、在这些类和对象中,应该具有哪些属性和方法;

3、类与类之间有怎么样的关系;

技巧:找类的方法:名词,判断名词是类,还是属性;

4)如何在内存中区别类和对象:

类是静态的,在内存的代码区;

对象是new出来的,在堆内存;

5)对象的创建和使用:

1、必须使用new关键字来创建对象;

2、使用对象名(引用).成员变量来引用对象的成员变量;

3、使用对象名(引用).方法(形参列表)来调用对象的方法;

4、操作对象,就是操作它的地址,对象名(引用)就是地址;

6)对象和类 总结:

对象和类的关系:特殊到一般,具体到抽象;

类:class;

对象:Object(事务) , instance(实例) ;

类可以看成一类对象的模版,对象可以看成该类的一个具体实例;

类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。

对象是java程序的核心,在java程序中“万事万物皆对象”;

JDK提供了很多类供编程人员使用,编程人员也可以自定义类;

创建Java自定义类:

步骤:

1)定义类(考虑修饰符、类名)

2)编写类的属性(考虑修饰符、属性类型、属性名、初始化值)

3)编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

类的属性、类的方法:

1)属性,field,属于成员变量;

2)属性用于定义一个类或一个类的对象所包含的数据,或者说静态属性;

3)属性的作用范围是整个类体;

4)在定义成员变量时,可以对其进行初始化,如果不对其初始化,Java使用默认值对其初始化;

5)属性定义格式:

[修饰符] 属性类型 属性名 = [默认值];

6)面向对象中,整个程序的基本单位是类,方法是从属于类的。

7)java中方法参数传递是:值传递;

 

类包含的元素:

1)成员变量:描述对象的静态属性,分为静态成员变量、非静态成员变量;

2)代码块:

3)构造方法;

4)成员方法:描述对象的动态行为,分为静态成员方法、非静态成员方法;

5)内部类;

构造方法:

1)构造器:也叫构造方法,constructor;

2)构造器的作用:(1)用于构造该类的实例(对象),(2)用来初始化对象的属性;

3)语法格式:

[修饰符] 类名(形参列表){

代码块;

4)构造器是一种特殊的方法:

A ) 使用new + 构造方法,来创建一个类的新对象;

B )  构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类对象),不能在构造器里调用return;

C ) 如果没有定义构造器,则编译器会自动定义一个无参的构造方法。如果已经定义则编译器不会添加;

D ) 构造器的方法名必须和类名一致;

E ) 构造方法可以有多个,构造方法的重载;

F ) 最好同时定义无参和有参构造方法;

 


原文链接:https://www.cnblogs.com/zhangze-lifetime/p/11597444.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:死磕 java同步系列之mysql分布式锁

下一篇:关于java的数组