附录1 Pclass.java
package com.yourname.ch3; class Dclass { //default class public void method1(){ System.out.println(\ } protected void method2(){ System.out.println(\ } void method3(){ System.out.println(\ } private void method4(){ System.out.println(\ } }
public class Pclass { //public class public void method1(){ System.out.println(\ } protected void method2(){ System.out.println(\ } void method3(){ System.out.println(\ } private void method4(){ System.out.println(\ } }
附录2 TestPackage.java
package com.yourname.ch3; public class TestPackage{
public static void main(String [] rgs){ } }
附录3 TestPackage.java
package com.yourname.other; public class TestPackage{
public static void main(String [] rgs){ }
28
实验三、对象和类(二)
1.实验目的
(1)结合面向对象思想掌握类的定义以及类中成员的定义,学会设计自己的类。
(2)掌握方法重载、尤其是构造方法的重载,深入理解构造函数的作用与调用时机。
(3)理解this关键字同static关键字的意义,掌握成员变量的具体隐藏实现。
(4)理解对象同对象引用间的区别,掌握创建对象与调用对象成员的方法,以及对象作为参数与基本数据类型变量做参数的区别。
2.实验内容和步骤
上机输入程序并调试运行程序。
(1)定义一个圆柱体类Cylinder,至少具有私有成员变量:height(double型, 用于保存高)、radius(double型,用于保存半径),以及成员方法setRadius、getRadius等、getArea(用于获得表面积)、getTj(用于获得体积)、print(打印对象的高、半径、体积、底面积信息)。在main方法,要求方法中通过“Cylinder y1=new Cylinder(); Cylinder y2=new Cylinder(100, 20);”分别新建高为1、底面半径为1和高为100,底面半径为20的圆柱体对象,分别打印y1同y2的信息;
(2)在上一节实验中,曾经定义过一个圆面积类Circle,请在它的基础之上,重写编写(1)中的圆柱体类Cylinder。
提示,可以利用Circle类的对象表示圆柱体的底,思考这两个
29
类之间应该是继承还是组合关系。
(3)定义一个学生类Student,要求其包含name(String类型,保存姓名)、birthday(上一节定义过的MyDate类型,用以保存生日)以及成员方法set、get等、print(打印对象信息)。在main方法,要求方法中通过“Student s1=new Student(); ”新建姓名为\、生日为1999年1月1日的对象,再通过类似“Student s2=new Student(\张三\”的方法新建与你自己信息相同的学生对象,分别打印s1同s2的信息;添加新的构造函数,以便能够通过“Student s3=new Student(\张三\MyDate()); Student s4=new Student(\张三\”语句创建的两个新对象,并分别打印其信息;
(4)在Cylinder和Student的默认构造方法中应用this方法,使之自身不包含初始化语句,而是通过自定义构造函数初始化成员变量。
(5)根据个人能力选择实现《数据结构》一课中学过的栈Mystack或单链表MyLinkList。(此题不写在实验报告中)
3.预习和复习内容 教材第4章。
30
实验四、继承与多态(一)
1.实验目的
(1)结合面向对象思想,熟练掌握子类的定义以及子类构造方法的定义,理解子类构造函数调用顺序。
(2)掌握父类方法的重写、深入理解子类中对父类成员的访问权限。
(3)理解Object的意义,掌握自定义类的toString()、equals()方法的实现。
(4)理解向上转型和向下转型,以及多态的目的和意义,掌握多态的常用形式。
2.实验内容和步骤
(3)在上一次实验中,曾经定义过圆面积类Circle、日期类MyDate,请重写它们toString和equals方法。在main方法中新建c1、c2两个默认Circle对象,d1、d2两个默认MyDate对象,分别通过equals方法比较;通过set方法修改c2和d2的成员变量值后,再分别通过equals方法比较;
注意,应比较重写toString方法前后,System.out.println(c1);System.out.println(d1)的结果。
(4)已知Employee类的定义(附录1),为其编写一个子类TempEmployee,其基本工资为500,计算工资办法为:工资=基本工资+奖金;如需要可以修改Employee类属性的访问修饰符。
(5)调试TestM.java(附录3 ),掌握向上转型与向下转型;
31
(6)分析TestM.java(附录2 ),Swan重写了父类的若干方法,其中哪些重写不成功,为什么?
3.预习和复习内容 教材第5章。
32