当前课程知识点:“做中学”Java程序设计 > 第3章使用面向对象基础语法 > 3.6构造方法 > Video
构造方法是用来创建对象
并且初始化对象信息的一个特殊方法
今天我们就一起来认识下构造方法
在前面的任务中我们创建了一个time类
可以使用new语法来创建一个time对象
比如这段代码
为了便于理解这条语句的作用我们可以将这条语句等价的分解成如下两条语句
第一条语句根据类time定义一个引用变量 取名为t
第2条语句能通过new关键字 创建一个time对象
我们通过赋值语句
将新建的对象赋值给的t引用变量这时候引用变量就真正引入了该新建的对象
将来可以通过这个引用变量对这个对象的进行访问和操作
这里用来创建对象的语法就遇到了我们今天要介绍的构造方法
所谓构造方法它是一种特殊的方法
主要用来构造对象
那么前面我们没有定义任何的构造方法
怎么就能创建时间对象的呢
是这样 对于一个新建的类
如果用户没有定义任何自定义的构造方法Java会非常人性化的提供一个不带任何参数的默认构造方法
这就是我们为什么能直接用new语法创建time对象的原因
需要注意的是 在运行时 第一个时间对象输出的值都是0
这就意味着 该对象的时分秒 实例变量的值他们都是0
尽管我们没有显示的对这些实例变量进初始化
请大家记住实例变量如果没有初始化Java那将会根据他们的数据类型自动的进行初始化
这里有给出了实例变量的初始化表
基本数据类型 会初始化为相应的值
除此之外的所有引用变量将初始化为new
如果我们对hour minute的实例变量分别初始化为8 15
然后我们将App当中相关赋值语句注释掉
你会发现对象打印出来的信息已经自动了初始化成了8点15分
在实际应用当中我们会更多的将这些初始化
实例变量的语句添加到构造方法当中
以便进行统一的管理和维护
要定义一个构造方法需要满足够的方法的语法
首先各个方法的方法名必须和类名保持相同
这里的相同包括大小写也必须保持一致
其次构造方法没有任何返回值
最后那构造方法只能在创建对象的时候被调用
下面我们为time类
添加一个可以由用户指定时分秒的构造方法
你可以这样写
构造方法首先是没有返回值的
他的方法名必须和类名相同
那么我们这里的类似是time
你就必须写成time
这里我们需要传递用户指定的时分秒三个数据
我们将他们作为三个参数
在构造方法当中
我们将它们保存到实例变量当中去
这个需要特别注意的是
由于构造方法的形式参数与实例变量名相同
为了区别他们
在引用实例变量时这里的this引用变量就不可以省略了
这样就比较好区分了
这里赋值语句左侧的this.hour表示实例变量
而右侧呢hour 表示形式参数
好了构造方法定好了
接下去我们来看如何去调用他们
那么需要注意的是一旦用户定义的自定义的构造方法
Java将不再提供默认的构造方法
你看这里原本正确的不带参数的构造方法现在报错了
他提示该不带参数的构造方法
已经成了一个未定义的构造方法
好 现在我们可以在创建时间对象的同时
传入自己希望得到的时间对象信息
比如我想得到一个
晚上 20点15分的时间对象
我就可以把 20 15
作为参数传递给它
最后我们还需要知道的是
在既有实例变量初始化语句
又有构造方法的情况下
在创建一个时间对象时这些语句的执行顺序应该是什么样的呢
为了观察他们的执行顺序
我们这里介绍一个
调试工具的使用
你可以在行号之前双击鼠标
设置一个断点在调试模式下程序运行到断点位置时将会暂停
要启动调试模式我们只需要选择工具栏上的小爬虫图标
Eclipse将提示
是否要切换到调试透视图
透视图是一个相关视图的集合
我们单击是就可以切换到调试透视图
这将打开跟调试相关的视图窗口你会发现程序已经在app的第6行暂停下来
为了观察初始化的过程我们在构造方法的第5行 第9行的位置 继续添加2个断点
单击工具栏上的播放按钮继续运行我们发现程序在执行构造方法之前
首先 执行了第5行
对所有的实例变量进行初始化
然后再执行第10到12行构造方法的内部语句
所以我们可以得出这样结论
Java在创建对象时
总是先执行实例变量的初始化然后再执行构造方法的内部语句
好了
今天我们就学到这里
还不赶快试试
在今天课程当中
我们重点学习了Java构造方法的写法
以及它的应用
你还需要重点
了解在创建Java对象时
初始化这些对象的过程
以及它们的先后顺序
-1.1Java简介
--01Java简介
-1.2搭建Java开发环境
--Video
-1.3使用记事本编写Java程序
--Video
-1.4使用Eclipse开发Java程序
--Video
-1.5导入/导出Java项目
--Video
-1.6管理组织代码
--Video
-第1章初始Java--测试题
-2.1认识标识符
--Video
-2.2变量和变量类型
--Video
-2.3数据类型和类型转换
--Video
-2.4使用常量
--Video
-2.5使用注释
--Video
-2.6使用运算符进行算术运算
--Video
-第2章使用Java基本语法(1)--测试题
-2.7使用运算符进行逻辑处理
--Video
-2.8使用if进行流程控制
--Video
-2.9使用switch进行流程控制
-2.10使用循环
--Video
-2.11循环的跳出和继续
--Video
-2.12多重循环
--Video
-第2章使用Java基本语法(2)--测试题
-3.1认识类和对象
--Video
-3.2为类添加属性
--Video
-3.3为类添加方法
--Video
-3.4为类添加静态方法
--Video
-3.5递归方法
--递归方法
-3.6构造方法
--Video
-3.7重载方法
--Video
-第3章使用面向对象基础语法--测试题
-4.1使用继承语法
--Video
-4.2使用数组
--Video
-4.3使用数组类操作数组
--Video
-4.4使用抽象类
--Video
-4.5使用接口
--Video
-第4章使用面向对象高级语法--测试题
-5.1异常处理机制
--Video
-5.2捕获异常
--Video
-5.3创建自定义异常
--Video
-第5章捕获并处理异常--测试题
-6.1SWT图形界面
--Video
-6.2使用SWT布局管理-FillLayout
-6.3使用SWT布局管理-RowLayout
-6.4SWT中的事件模型
--Video
-6.5常见事件处理写法
--Video
-第6章使用SWT设计界面--测试题
-7.1微波炉模拟程序的界面制作
--Video
-7.2微波炉模拟程序的代码重构
--Video
-7.3微波炉模拟程序的事件监听
--Video
-7.4微波炉模拟程序的数字键盘
--Video
-7.6微波炉模拟程序CookTimer
--Video
-7.7微波炉模拟程序添加图像
--Video
-7.8微波炉模拟程序添加声音
--Video
-7.9微波炉模拟程序安装包制作
--Video