达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
java程序员
 当前位置:主页 > 高端课程 > java程序员 >

Java 对象和类

时间:2019-10-02  来源:未知  作者:广州达内培训

          

 

 

 

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

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

别人在不清楚你所写的功能代码的情况下是很难上手的,因为我们是以方法来进行组织代码的,别人需要把整个流程熟悉后,才能进行在之前的基础上进行开发(别人需要把每一个方法内部的实现细节都要了解,才能进行修改,否则很有可能把之前程序的逻辑性打乱,从而引发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 ) 最好同时定义无参和有参构造方法;

 




上一篇:Java 的基本程序设计结构
下一篇:没有了

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载