西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
教 案
编号:9
章节 教 学 目 的 教 学 重 点 教 学 难 点 时间 分配 Min 15 15 Java语言中的修饰符 授课方式 讲授+学生实验 (1) 掌握this、static、package、import它们的含义以及用法。 (2) 掌握对象数组的声明及用法。 (3) 培养学生实际动手能力。 (4) 培养学生面向对象的编程能力。 (1) 对象数组。 (2) this、static、package、import。 (1) 对象数组。 (2) this、static。 教 学 过 程 一、 作业点评及检查(学生阐述+老师总结) (1) 由1-2个学生讲述上周作业的实现思路以及展示程序实现;过程中由老师补充和总结。 二、 对象数组(讲授) (1) 在Java中不但可以声明由原始数据组成的数组,还可以声明由对象组成的数组; 声明对象数组的方式如: //假设已经定义了一个Student类 /*声明由5个Student对象组成的数组*/ Student[] stdAry = new Student[5]; (2) 上述方式类似于C语言中的: struct Student **p = NULL; p = (struct Student**)malloc(5 * sizeof(struct Student*)); (3) 对象数组==引用数组 第20页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
15 10 25 100 三、 this关键字 (1) 既然所有的对象都共用相同的成员方法,那么在不同的对象都调用同一方法时,它是怎么确定要使用哪个对象的数据成员呢? (2) 每个成员方法都有一个隐含的this引用,它总是指向调用它的对象; (3) This为调用成员方法的对象的地址; (4) 可以像使用任何引用那样使用this。 四、 静态成员变量 (1) 在成员变量前加static关键字,可以将其声明为静态成员变量; (2) 静态成员变量只有一份内存拷贝,即所有对象共享该成员变量; (3) 静态成员变量的作用域只在类内部,但其生命周期却贯穿整个程序。 五、 包 (1) 有时候,类和类的名称可能发生冲突; (2) Java提供了把类名空间划分为更容易管理的块的机制,这就是包; (3) 包类似于文件夹; (4) 分属不同包的类名相同也不会引起冲突; (5) 能在包与包之间对于类的访问权限提供更有力的约束。 (6) 使用package关键字打包 (7) 使用import关键字导入包 六、 上机实验 (1) 编写一个学生类,学生类里有标示姓名的属性和标示年龄的属性,写一个构造方法,在构造方法里为属性赋值时,必须用到this关键字。写一个输出函数,输出学生的姓名和其年龄。写一个测试类,在测试类里定义一个长度为3的学生类的对象数组,为数组里的每一个元素实例化一个学生对象,并调用其输出函数,程序运行结果如下: (2) 编写一个学生类,类里有一个标示姓名的属性和一个静态的标示总学生个数的属性,写一个构造方法,使每创建一个学生对象时学生个数自加,写一个输出结果的方法,程序运行的结果如下: 第21页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
(3) 随便写一个JAVA程序,在程序的最前面写下面这条语句: package newer.java; 编绎运行,并到原程序所在目录下查看生成的包结构。 (4) 编写下面的程序,编译后分析报错的原因 public class Test { public static void main(String [] args) { JFrame f=new JFrame(\我的窗口\ f.setSize(400,300); f.setVisible(true); } } 然后在程序的最前面写上以下语句,再次编绎、运行,并分析这条语句的作用。 import javax.swing.JFrame; 作 业 布 置 课 后 总 结 (1) P216-217 10、11、12、13。 (1) 对static的理解还需多加强程序编写的练习。 第22页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
教 案
编号:10
章节 继承 — 基本概念及基本用法 (1) 理解什么是继承。 (2) 掌握在Java中实现继承,extends关键字。 (3) 掌握继承中的构造方法的用法。 (4) 掌握super关键字的含义及用法。 (5) 培养学生项目展示能力。 (6) 培养学生主动思考问题的能力。 (7) 培养学生实际动手能力。 授课方式 讲授+上机 教 学 目 的 教 学 重 点 教 学 难 点 时间 分配 Min 20 5 10 (1) 继承的基本概念以及Java实现。 (1) 继承的基本概念以及Java实现。 教 学 过 程 一、 作业点评及检查(学生阐述+老师总结) 由1-2个学生讲述上周作业的实现思路以及展示程序实现;过程中由老师补充和总结。 问题描述: (1) 方法重载的不理解(同类同名不同参) (2) 错误重犯率较高;如构造函数无返回类型、构造函数名与类名不一致、类名不规范、带有main方法的class名与物理文件名不一致、没有通过对象调用方法(非静态方法)、方法名后不带();甚至出现类名后加()现象。 (3) 只要与类名不一致的方法都视为成员方法,需返回类型。 (4) Dog类带有static的count成员,创建dog1...dog5对象后,最后用for循环遍历后,调用方法后结果一致。(应在各自对象后调用方法) (5) 静态变量以及静态成员可以直接通过类名.出来。 二、 回顾 (1) 方法重载应遵循三大原则; (2) 适当地重载构造方法,可以使初始化对象的方式更为灵活; (3) this引用总是指向调用成员方法的对象本身; (4) 静态成员(包括静态成员属性和静态成员方法)属于类而不是属于某个对象,可以在实例化对象之前通过类名访问; (5) 使用package关键字打包; (6) 使用import关键字导入包或类。 三、 继承的概念 (1) 在现实生活中的继承,可以理解为儿子继承了父亲的财产,即财产重用; (2) 面向对象程序设计中的继承,则是代码重用; (3) 继承是利用现有的类创建新类的过程,现有的类称作基类(或父类),创建的新类称作派生类(子类)。 第23页 共51页
西南财经大学天府学院教案 TIANFU COLLEGE OF SWUFE
15 10 120 (4) 最高层是最普遍的、最一般的情况,往下每一层都比上一层更具体,并包含有高层的特征,通过这样的层次结构使下层的类能自动享用上层类的特点和性质; (5) 继承其实就是自动地共享基类中成员属性和成员方法的机制。 四、 在Java中实现继承 在Java中实现继承需要使用到extends关键字; 实现继承的一般语法是: [访问修饰符] class 派生类名 extends 基类名 { 成员列表 } 如: class Student extends Person { …… } 五、 类成员的访问控制权限 (1) 信息隐藏是面向对象程序设计的重要特点之一,它可以: a) 防止类的使用者意外损坏数据; b) 对任何实现细节所作的修改不会影响到使用该类的其它代码; c) 使类更易于使用。 (2) 在Java中实现信息隐藏的是访问控制权限机制; (3) 访问控制权限包括4个访问修饰符:public、protected、private和缺省; (4) 可以使用上述访问修饰符修饰类的成员。 六、 上机实验 (1) [练习一] 医生有姓名(name),编号(idNumber),地址(address)等基本信息,都有display()显示信息的方法。医生又分专业医生和非专业医生,非专业医生所具有的信息与上述的一样。但专业医生出了具有上述的基本信息之外还有特有的信息:专业(speciality)。请根据他们之间的关系,创建一个医生类(Doctor),包含医生的基本信息。再利用继承创建一个非专业医生类(NonSpecialist )和一个专业医生类(Specialist),专业医生类包含一个显示其专业的方法public void showSpwciality()。利用这些类的对象显示他们各自的信息。 / *提示 1.医生类构造方法中可以加入一条显示代码 System.out.println(\这是父类构造方法\); 2.非专业医生类只需继承医生类无需编写任何属性,方法。 3.专业医生类继承医生类,并添加属性:专业,构造方法需使用super调用父类构造方法,添加获得专业信的方法和显示专业信息的方法。 所有的类都是用构造方法初始化对象,在test类中编写main方法测试。 class Doctor{ ..... private name; ...... public void display(){ System.out.println(\姓名\。。。。);//其他属性类似姓名
第24页 共51页