对象和类—Java世界的细胞
对象和类—Java世界的细胞
今天向大家介绍我自己关于Java中对象和类的一些体会,中有不足还请大家多多指教
1.面向对象程序设计
-
为什么会产生面向对象
我认为人们在最初探索计算机世界时,常常会从计算机出发的角度去思考问题,因而就像解应用题时的倒推法,根据问题思考求解的过程,这就是面向过程的程序设计。而随着技术需求的发展,人们需要更为直接的,从人的角度去思考问题的程序语言,因而诞生了面向对象的程序设计,它像一种正推解法,将数据放在第一位,然后才是算法,即“程序=数据结构+算法”
-
什么是面向对象
-
面向对象的程序设计从组织架构上像在模拟客观世界,其中存在许多对象,对象各自有自己独有的属性和方法,各个对象不断地相互作用,相互联系中运行着
-
对象的独立属性和方法被封装在其内部,不由外人随意干涉踏足,同时重视对象模块间的接口联系,以及对象与外部环境间的联系
-
2.类和对象
-
new关键字的使用
当使用new关键字创建一个对象时,实际上同时也创建了这个对象的引用,只是该引用不可见,或者说匿名而已,如果我们只用一次该对象,那么这就够了,但如果我们计划使用多次,则需要创建一个引用变量,然后将刚才的不可见引用变量赋给它,这样第二次使用改对象时就可以通过你刚才创建的有名字的变量进行访问了,像下面这样
new Student(); //仅计划使用一次该对象时只new即可 Student s; s=new Student(); //先创建引用变量s,再创建一个对象,并将该对象的不可见引用赋给s Student s=new Student(); //通常我们将两步一气呵成
-
成员变量的初始值
通常当我们创建一个对象时,如果这个对象有许多成员变量,那么系统会给这些成员变量赋初始值,但虽然你并不需要给他们赋初值,但这是提倡的,我们应该一开始创建他们时就为其赋初值,来提高代码的可读性,同时避免我们因为混淆了成员变量与局部变量(系统不会为局部变量赋初值,故我们创建它后在使用它前必须为它初始化)
-
对象的比较
对象的比较分为两种,一是”是不是为同一个的比较“,二是“是不是为同一种的比较”,前者用一般用引用变量的==进行比较,因为引用变量里存放的是对象的地址,当两家地址一模一样,说明两家为一家
3.方法
对象的方法实际上规定了对象的行为,对象的能力,表明对象可以做的事情以及接受外界什么样的刺激(信号)会做出的反应
-
返回类型
- 返回类型可以是对象类型(包括null),也可以是基本数据类型
- 当返回类型为对象类型时,返回值为对象引用变量的值
- 返回类型支持自动转换,大致规则为”要大给小“,”要小给大“则不行,具体见java自动转换机制
-
变长参数
有时我们需要接受的参数序列长度是不固定的,例如需要排队,但你并不知道有几个捣蛋的小孩没有来,参数序列不像以前是固定的,此时如果用数组替代,那么在排队之前我们还需要将来了的小孩们都输入数组,显然也很麻烦。为了解决这种问题,java中引入了变长参数
- 变长参数的语法为<数据类型... 数据组的名字> 形式上类似数组,只是在原先的数据类型后加上了...,其实实际用法也基本同数组了,它也可以使用下标访问数据组的元素
- 变长参数使用的规则如下:
- 一个方法最多只要一个变长参数
- 如果有多个参数,变长参数必须在参数序列的最后
4.引用问题
- 当试图调用不存在的方法或成员变量时,编译会报错
- 当试图调用引用变量为null(即空引用)时,编译不会报错,但在运行时会报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通