当前位置:首页 > 实验五:java中类的重用
实验五:关于java中类的重用
一.实验目的
1. 理解继承的概念,了解其在程序设计中的作用;
2. 熟悉类的继承定义方法,熟练地由系统类或者自定义的类派生出子类,并熟
知子类对继承自父类的成员的访问性;
3. 理解属性隐藏与方法覆盖(重写)的概念,并会调用父类中被隐藏的属性或
被覆盖的方法;
4. 理解在子类中调用父类的构造方法的原则与方法;
5. 理解终结类、终结方法、抽象类、抽象方法的概念与特点; 6. 理解组合和继承的区别,知道何时使用哪种方法。
7. 掌握本章提到的Java基础类库中的一些常见类,如String、StringBuffer、
Math、Date、Calendar等;
8. 了解JAR文件的概念、jar命令的格式,会创建可执行的jar文件。
二.实验内容
2.1 类的继承
1. 设计并实现一个MyGraphic类及其子类MyRectangle:
(1) MyGraphic类包括两个属性:线条的颜色lineColor与填充颜色fillColor,方法包括:
无参构造方法——用于初始化lineColor与fillColor分别为黑色与红色; 带两个参数的构造方法——用形参给成员变量进行初始化; get/set方法——用于获取和修改属性值; print方法——用于输出属性值。
(2) 矩形类MyRectangle有长、宽两个私有属性,方法有:构造方法、get/set方法、计算周长与面积的方法,其中在构造方法中调用父类MyGraphic的构造方法初始化父类继承来的两个属性,并初始化本类定义的属性。
(3) 定义测试类创建MyGraphic和MyRectangle的对象,调用相应方法输出颜色,对于矩形对象还要求周长、面积最后输出。
2. 定义一个类Person,并由该类做基类派生出一个子类Employee。 其中: (1) Person类具有name、age两个保护成员变量,分别为String类型、整型。 该类的构造方法用于对成员变量进行初始化,要求定义一个无参构造方法
与一个有两个参数的构造方法,在无参构造方法中调用有参构造方法。 (2) Employee类具有保护成员变量empno,类型为整型。 该类也定义一个无
参构造方法与一个有参构造方法对成员变量进行初始化,在这两个构造方法中分别调用父类的无参与有参构造方法。
(3) 编写测试类对Person类与Employee类进行测试。
3. 定义一个抽象基类Shape,它包含一个属性Color、一个非抽象方法
getColor( ),一个抽象方法getArea( ),从Shape类派生出Rectangle和Circle类,定义这两个类的成员变量、构造方法,实现父类的getArea( )方法计算
1
对象的面积。编写应用程序使用Rectangle类和Circle类。 4. 定义一个学生类Student及其子类班长类StudentBZ:
(1) Student类中的属性包括:学号、姓名、3门课的成绩、总分、平均分;方法包括:
a) 一个无参构造方法与一个带4个参数的构造方法; b) 成员变量相应的get/set方法用于获取与设置成员变量值;
c) 实例方法input( )用于输入学号、姓名、3门课的成绩;total( )用于统计每
个学生的总分;average( )方法用于计算平均分(3门课总和/3);toString( )方法返回学生的信息。
d) 类方法void Max(Student stu[],int n)求出成绩最高者,并输出该生的学号、
姓名、3门课的成绩以及平均分。
(2) 子类StudentBZ的属性包括:responsibilities(职责) ,manageStuds(所管理的学生);重写父类的average( )方法,班长的平均分=3门课总和/3+5;重写toString( )方法输出班长的信息。
(3) 定义测试类,对包含5个学生对象的数组进行测试,调用input方法输入数据后求总分,最后找出最高分者。定义一个班长对象,将5个学生对象作为其管理的学生对象,并输出班长的各项信息。
2.2 类的组合
1.(1) 定义一个类Person,具有name、age两个私有成员变量,分别为String类型、整型。要求定义一个无参构造方法与一个有两个参数的构造方法对成员变量进行初始化;定义各成员变量的get/set方法,重写toString方法。 (2) 由Person类派生出一个子类Employee,包括年薪及受雇日期,定义该类 的无参与有参构造方法,在这些构造方法中分别调用父类的构造方法;定义 各成员变量的get/set方法,重写toString方法;
(3) 定义一个MyDate类(日期类)作为受雇日期,其中包括年、月、日属性,定义该类的构造方法以及各成员的get/set方法。
(4) 定义一个测试类,创建具有3个元素的Employee对象数组,调用相应方法将对象的基本情况输出并分析各个构造方法的执行顺序。
2.3 系统类的使用
1.查阅Java API文档,了解java.text.SimpleDateFormat类,使用该类及相关方法,将系统当前时间格式化为图示的格式输出。
2.查阅Java API文档,了解String 类,分析以下语句的输出结果:
(1) 定义字符串s:String s=”Micrsoft公司”; 执行char c=s.charAt(9);语句后,c的值为________。
2
(2) 以下语句执行后输出的结果是________。 String s0 = new String( \System.out.println(s0.length() );
(3) 以下语句执行后输出的结果是________。 String s1=new String(\String s2=new String(\ boolean b1=s1.equals(s2);
boolean b2=(s1==s2);
System.out.print(b1+\ \ (4) 下面程序段输出的结果是________。 String s1=\
System.out.println( s1.equalsIgnoreCase( s2 )); (5) 下面程序段输出的结果是________。 String s1=\
System.out.println( s1.compareTo( s2 ));
(6)下面的程序段执行完后,cont的值是多少________。 String strings[]={ \int cont=0;
for ( int i = 0; i < strings.length; i++ ) if ( strings[ i ].endsWith( \ cont++;
(7) 定义字符串:String str = \则str.indexOf( 'd' ) 的结果是________。 (8) 下面的程序段输出的结果是________。 StringBuffer buf1;
String str=\北京2008\buf1=new StringBuffer(str);
System.out.println(buf1.charAt(2));
(9) 下面的程序段输出的结果是________。 StringBuffer buf1;
String str=\buf1=new StringBuffer(str); buf1.setCharAt(0,'6');
System.out.println( buf1.toString() ); (10) 若有如下赋值语句:
x = new StringBuffer().append(\x的类型是_______;它的值是_______。
2.4 jar命令的使用
将2.1与2.2中编写的各个应用程序压缩打包生成可执行的jar文件,并在命令行下运行这些jar文件。
3.思考题
(1) 子类可以访问父类中哪些访问控制符修饰的成员? (2) 方法覆盖(重写)的概念?它与方法重载的区别。
4.实验报告内容
3
(1) 实验内容
定义一个抽象基类Shape,它包含一个属性Color、一个非抽象方法getColor( ), 一个抽象方法getArea( ),从Shape类派生出Rectangle和Circle类,这两个类都 用getArea( )方法计算对象的面积。编写应用程序使用Rectangle类和Circle类。 (2) 实验目的 (3) 实验步骤 (4) 遇到的问题
(5) 实验结果与实验心得
4
共分享92篇相关文档