授课教师:牟勇

课时:100分钟

l

本章技能目标

n

会定义和使用类的方法

n

理解变量作用域

n

会创建包组织Java工程

n

会添加类方法的JavaDoc注释

n

会阅读JavaSE6文档

l

本章重点

n

理解变量作用域

n

会定义和使用类的方法

n

创建包组织Java工程

l

本章难点

n

使用类的方法

n

创建包组织Java工程

l

本章工作任务

以OO方式实现

n

计算并显示总成绩

n

计算并显示平均成绩

1.类和对象的区别是什么?

2.数据类型有哪两类?

3.实现输出学生信息,下面代码有哪些错误?

public class &Student {

String name;

char sex;

int age;

public String tostring(){

return name + "/t" + sex + "/t" + age;

}

public static void main(String[] args){

Student stu = new Student();

name= "神仙姐姐";

sex= 'F';

age= 18;

System.out.println(stu);

}

}

类的方法由哪几部分组成?

使用什么关键字定义包和导入包?

JavaDoc怎样写注释?

类的方法

提问:大家以前都玩过电动玩具吧?幻灯片1上面的图片就是一只电动狮子,我们用前一章所学习过的知识,来说一说,这只狮子有些什么属性和方法?

答案:直接出示电动狮子类:

/*

* AutoLion.java

*电动玩具类

*/

public class AutoLion {

String color = "黄色"; //颜色

/*

*跑

*/

public void run() {

System.out.println("正在以0.1米/秒的速度向前奔跑。");

}

/*

*叫

*/

public String bark() {

String sound = "吼";

return sound;

}

/*

*获得颜色

*/

public String getColor() {

return color;

}

/*

*显示狮子特性

*/

public String showLion() {

return "这是一个" + getColor() + "的玩具狮子!";

}

}

在这个类中,我们定义了一个属性:颜色。另外还定义了四个方法,分别是:跑,叫,获得颜色还有显示狮子的特性(玩具的颜色)。什么叫方法呢?方法其实就是我们对某个事情怎么做的具体描述,它包括了方法名,方法体,还有返回值。

如何定义方法

提问:如何定义方法?

答案:我们来具体看看AutoLion类的跑方法和叫方法是怎么写的。

从中我们规定:run()和bark()就是我们方法的名字,而方法后面跟着的一对大括号,里面写的就是我们的方法体,它具体描述方法都做些什么事情。而写在方法名前面的一个单词,run()前面是void,而brak()前面是String,这两个单词就是在说明我们的方法将会产生的返回值。

由此,得出方法定义的语法为:

方法的命名

提问:我们知道为变量取名字是有限制的(让学员回忆变量命的规则),那方法的命名都有哪些规则呢?

答案:方法命的规则和变量命名的规则差不多:

Ø

必须以字母、‘_’或‘$’开头

Ø

可以包括数字,但不能以它开头

方法的返回值

提问:我们现在已经知道了如何定义一个方法,也知道了如何为方法取名,那我们应该如何写返回值呢?

答案:如果一个方法有返回值,我们直接写明它的返回值类型(如:String),同时,在方法体内必须也要有一个“return变量”的语句与它对应。例如,如果返回值类型是String,那么,我们的return后面跟着的也必须是一个String的变量或String常量。

如果一个方法没有返回值,那么,我们写为void,并且在方法体中不写return语句,或只写一个return语句,后面不跟任何值。

小结:常见错误

请大家找出下面代码的错误(幻灯片10,11,可以上机编译,让学员看到编译错误信息):

错误提示:main()方法的返回值是void,而在方法体中,return后面却返回了一个String的常量。

错误提示:return语句后面只能返回一个值,而这里却返回了两个变量。

方法调用

提问:现在我们已经知道了写一个方法的规则,写任何东西都是要拿来用的,那我们如何使用我们写好的方法呢?

方法调用可以分为两种方式。一种是在类的内部调用方法,另一种是在另一个类B里调用类A的方法。如果在类的内部调用方法,只要很简单的写出方法名就可以了(记得方法后面都要加上小括号),如:

如果要在一个类的方法中调用另一个类的方法,就要麻烦一点。首先要实例化(new)另一个类,产生一个对象,然后再用对象名.方法()的形式进行调用。如:

小结:

情况

举例

1、类Student的方法a()调用Student类的方法b(),直接调用

public void a(){

b();//调用b()

}

2、类Student的方法a()调用类Teacher的方法b(),先创建类对象,然后使用“.”调用

public void a(){

Teacher t = new Teacher();

t.b();//调用Teacher类的b()

}

编写成绩计算类(ScoreCalc)

Ø

属性:3门成绩(Java、C#、DB)

Ø

方法:计算平均成绩,显示平均成绩,计算总成绩,显示总成绩

Ø

(源代码见ScoreCalc.java)

编写测试类

Ø

(源代码见TestScoreCalc.java)

变量作用域:[15分钟]

变量作用域

过渡:修改AutoLoin类的代码,在showLion方法中加入一个错误的变量sound。

提问:前面我们做的那个玩具狮子类不太完善,我个人觉得,除了显示颜色以外,还应该显示一下它的叫声。我们怎么做呢?

答案:修改后的代码如下:

大家会看到,如果我这样修改,编译器会报错了:找不到对象sound,这是怎么回事呢?

告诉学员:在我们的现实生活中,很多事物是有所有者的,比如,我有一个手机,你也有一个手机。如果我要用你的手机,一定要事先征得你的同意。当然也有一些事物是公共的,比如路灯,如果我要使用路灯,不需要征得谁的同意,大家都可以用(当然,不能把路灯搬回自己家)。我们把对物品的使用范围称为作用域,例如路灯的作用域就是马路旁边,我的手机的作用域,就是我自己,你的手机的作用域就是你自己,同样,在Java编程中也模仿这种情况,它的作用域区分是通过大括号来标明,变量声明在哪个大括号里,就只在哪个大括号里起作用。

总结:我们把写在类的大括号里的变量称为成员变量,而把其余的变量统称为局部变量。在上例中的color就是成员变量。由于类的大括号括住了类里的所有代码,所以color可以在类的任何位置使用。而上例中的sound变量,却是声明在bark()方法的大括号里的,所以sound变量的作用域仅在bark()方法中,即只能在bark()方法中使用,其它的地方就不能引用它了。

我们知道,除了类和方法都会打大括号,if和循环语句也会打大括号,那我们在for循环里声明一个变量之后,它的作用域是个什么情况呢?我们再看一个例子:

大家会看到,编译器报错了。在System.out.println()这里是找不到a这个变量的,同样i也是找不到的。原因和前面说的是一样的,因为i和a均声明在for循环内部,所以,出了for循环,这两个变量就无效了,所以编译器会说找不到对象。

小结:让学生写出三个类,重点在方法的调用及变量作用域

编写电池类(Cell):自动续电

Ø

属性:品牌

Ø

方法:续电

编写手机类(Phone):它可以下载音乐,可以播放这些音乐,可以进行充电

Ø

属性:无

Ø

方法:下载音乐,播放音乐,充电

编写测试类(TestPhone)

Ø

源代码见Phone.java,Cell.java,TestPhone.java

为什么要这样写代码

以前我们也写过平均分计算的代码,我们来回忆一下:

提问:既然我们可以这样写,为什么还要改成类的形式呢?

答案:这样写是可以的,但如果我们有2000个地方都需要用到这样一段代码,难道我们复制粘贴2000次?好,就算你完成了2000次的复制粘贴,这时候,老板通知你:我们不算3科成绩了,要算5科成绩了,我相信你连跳楼的心都有了。

那怎么办呢?面向对象思想告诉我们,有办法!

就是把这样的一段代码写在一个方法里,其它的地方都使用方法调用,不用重复写代码,如果代码要改,只要改动方法就可以了,方法调用的地方都不用修改,怎么样?是不是很爽?

为什么需要包:

提问:现在我们学会了很厉害的一招,使用方法和方法调用来减少我们的编码量,所以,以后的工作就是写类写方法了,假设你工作了一年,结果就是:你有了一大堆类。如果对这些类不进行管理,那我们要找其中一个类会是非常困难的,那怎么管理呢?

答案:生活中,我们是通过文件对我们的文件进行分门别类的存放的,这样我们要找什么东西都会很快,计算机操作系统也是通过文件夹系统来管理各种文件。在不同的文件夹中,文件的名字可以重名,这样就减轻了我们想名字的痛苦,而Java也采用了相似的办法,在Java使用包对Java的类文件进行管理。

包是什么:

包非常类似于文件夹,Java使用包来组织Java程序。

如何创建和导入包

使用关键字package创建包,即定义了该类文件的位置。使用关键字import来导入包,目的是使用处在其他包中的类。

注意:package应该是Java程序里的第一行代码。

演示在Eclipse中如何创建包。

小结2:幻灯片29

JavaDoc注释:[5分钟]

JavaDoc注释:

回顾原来学过的注释:

单行注释://这里是注释

多行注释:/*这里是注释1

这里是注释2*/

JavaDoc注释:使用“/**”开始和“*/”结束,用来注释类,方法等

类的注释:

方法的注释:

演示如何把JavaDoc变为帮助文档

定义类的方法的步骤是什么?

类中的一个方法如何调用类的另一个方法?

类中的一个方法如何调用另一个类的方法?

如何声明包?如何导入包?

包与存储Java源文件的目录结构的关系是什么?

如何给类的方法添加JavaDoc注释?

暂无

暂无

习题1:174页至176页选择题

习题2:176页第1,3题

习题3:预习第八章,试做课后的选择题

java 电池类类代码举例_教案:Java第7章 类的方法相关推荐

  1. java分部积分任务代码实现_数值积分 Java 实现

    之前在SICP上看到一个很厉害的东西,考虑三个问题: 计算从 a 到 b 间所有整数的和 计算从 a 到 b 间所有整数的三次方之和 求解序列 \(\frac{1}{1 \cdot 3} + \fra ...

  2. java中各种vo举例_了解JAVA中的POJO,Entity,PO,VO,DTO,DM包括代码举例展示

    标签: 首先是从概念上来说 POJO,全称Plain Ordinary Java Object,我理解为极其单纯的Java对象 一般只有属性字段,无参构造以及get和set方法,也是指那些没有从任何类 ...

  3. springboot中service中注入dao失败测试类中注入成功_聊一聊 Java 服务端中的乱象

    查尔斯·狄更斯在<双城记>中写道:"这是一个最好的时代,也是一个最坏的时代." 移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动:随着行业竞争加剧,互联网红利 ...

  4. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  5. java先执行static还是构造函数_【Java基础】类的实例化、static、父类构造函数执行顺序...

    重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西. 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类, ...

  6. java中构造方法只能有一个_对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能...

    对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能 更多相关问题 猛虎噬人卣是_______时期的陶塑代表作品. 静态网页是指网页的内容是固定的, ...

  7. java 静态代码块_关于Java你不知道的那些事之代码块

    前言 普通代码块:在方法或语句中出现的{},就被称为代码块 静态代码块:静态代码块有且仅加载一次,也就是在这个类被加载至内存的时候 普通代码块和一般语句执行顺序由他们在代码中出现的次序决定,先出现先执 ...

  8. java代码识别_识别Java中的代码气味

    java代码识别 作为软件开发人员,我们不仅要编写有效的代码,而且还要编写可维护的代码,这是我们的责任. Martin Fowler在他的<重构:改进现有代码的设计>中将代码气味定义为: ...

  9. java开闭原则代码实现_如何提高你的代码设计能力?

    前段时间零零碎碎把设计模式梳理了一遍,这个想法的初衷是基于JDK15的发布,阅读一些源码,一些设计很熟悉但是总是想不起是什么设计模式! 我们日常开发或者在做底层架构设计时,更应该留意和关注代码层面还有 ...

最新文章

  1. 无痛涨点!大白话讲解 Generalized Focal Loss
  2. #include algorithm 常用函数
  3. iOS 9: UIStackView入门
  4. java+arrayblockquene_java集合(五)Queue集合之ArrayBlockingQueue 详解
  5. db是哪个城市的缩写_北京自体脂肪填充哪个医生做得好?
  6. 攀枝花a货翡翠,晋城a货翡翠
  7. Linux 以form表单形式上传文件
  8. 7月20日专家在线访谈“员工上网管理是否可行”
  9. Delphi指针总结
  10. python 爬虫库 u_9个用来爬取网络站点的 Python 库
  11. 《HTTP权威指南》学习总结1——HTTP协议概述
  12. IBM服务器引导盘serverguide 下载
  13. 英特尔第十代处理器为什么不支持win7_Intel最新CPU和主板不能装Win7?解决办法来了...
  14. 5G时代下,如何做好个人信息保护?
  15. 函数的基本概念以及函数封装
  16. 诺威健康IPO招股书失效:称将继续录得巨额亏损,TPG持股74.6%
  17. IrisSkin 皮肤
  18. DOM对象,控制HTML元素
  19. 【华为OD机试真题 python】最短木板长度【2022 Q4 | 100分】
  20. 强制推到远程git push

热门文章

  1. DevStore热门免费优秀资源推荐(123月合集)
  2. python爬虫豆瓣评论实验报告_用python实现豆瓣短评通用爬虫(登录、爬取、可视化分析)...
  3. 重装完win10系统我的电脑没声音了,如何处理
  4. JAVA通过身份证号码获取出生年月、年龄及性别
  5. 微博上一些有用的话(三)
  6. 2022年质量员-装饰方向-通用基础(质量员)免费试题及质量员-装饰方向-通用基础(质量员)复审考试
  7. 微信步数换礼品小程序 微信小程序步数换东西 走路步数兑换礼品的小程序需要怎么开发?
  8. 基于51单片机的数字温度计及电压表设计【仿真设计-127】
  9. Unity编辑器内搜索小技巧
  10. Unity VR:如何自定义手部显隐