PAGE5
《面向对象程序设计》教案
第11讲
教学对象
计算机科学技术专业
授课内容
4.10对象初始化
4.11变量作用域
4.12局部变量类型推断
4.13垃圾回收
课程标准
教学目标
(一)知识目标
1.了解对象初始化和变量作用域
2.掌握局部变量类型推断var的使用
3.了解垃圾回收的概念
(二)能力目标
1.能够应用类、对象、封装、继承、多态等知识编写应用程序
2.能够掌握面向对象理论与方法,进行创新性的编程设计
教学方法
课前预习、课堂讲授、课堂练习。
学时及分配(第1学时50分钟)
课堂讲授30分钟
课堂练习20分钟
4.10对象初始化
4.11变量作用域
4.12局部变量类型推断
4.13垃圾回收
学时及分配(第2学时50分钟)
课堂讲授20分钟
课堂练习30分钟
编程训练
知识点分析
重点:
对象初始化
变量作用域
方法的递归调用
难点:
方法的递归调用
教学过程设计
内容
方式
问题导入
上次课学习了实例变量和静态变量,实例变量和静态变量的初始化略有不同。在Java程序中需要创建许多对象。为对象确定初始状态称为对象初始化。下面我们来学习对象初始化相关内容。
内容要点
4.10对象初始化
在Java程序中需要创建许多对象。为对象确定初始状态称为对象初始化。对象初始化主要是指初始化对象的成员变量。实例变量和静态变量的初始化略有不同。当一个对象不再使用,应该清除以释放它所占的空间,通过垃圾回收器清除对象。
4.10.1实例变量的初始化
Java语言能够保证所有的对象都被初始化。实例变量的初始化有下面几种方式:(1)声明时初始化。(2)使用初始化块。(3)使用构造方法初始化。
1.成员变量默认值
在类的定义中如果没有为变量赋初值,则编译器为每个成员变量指定一个默认值。对引用类型的变量,默认值为null。对基本数据类型的变量,默认值如表4-1所示。
【程序4-14】使用成员变量默认值初始化对象状态。Student.java
packagecom.boda.xy;
publicclassStudent{
intid;
成员变量没有赋初值,它们将使用默认值。Stringname;
成员变量没有赋初值,它们将使用默认值。
doublemarks;
booleanpass;
//定义成员方法
publicvoiddisplay(){
System.out.println(id=+id);
System.out.println(name=+name);
System.out.println(marks=+marks);
System.out.println(pass=+pass);
}
publicstaticvoidmain(String[]args){
Students=newStudent();
s.display();
}
}
2.在变量声明时初始化
可以在成员变量声明的同时为变量初始化,如下所示。
3.使用初始化块初始化
在类体中使用一对大括号定义一个初始化块,在该块中可以对实例变量初始化。例如:
intid;
Stringname;
doublemarks;
booleanpass;
{
id=1001;
这里是初始化块,由一对大括号定界。name=李明;
这里是初始化块,由一对大括号定界。
marks=90.5;
pass=true;
}
4.使用构造方法初始化
可以在构造方法中对变量初始化,例如,对于Student类可以定义下面的构造方法。
publicStudent(intid,Stringname,doublemarks,booleanpass){
用构造方法参数初始化成员变量。this.id=id;
用构造方法参数初始化成员变量。
this.name=name;
this.marks=marks;
this.pass=pass;
}
5.初始化次序
从上面程序输出结果可以看到,构造方法被最后执行,这与初始化块和构造方法在源代码中的位置无关。实际上,程序是按下面顺序为实例变量初始化的。
(1)首先使用默认值或指定的初值初始化。
(2)接下来执行初始化块。
(3)最后再执行构造方法。
4.10.2静态变量的初始化
静态