2.以下程序的运行结果?
import java.util.Calendar; class Time {
private Calendar t;
private int y, m, d, hh, mm, ss; Time (){
t=Calendar.getInstance(); y=t.get(t.YEAR);
m=t.get(t.MONTH)+1; d=t.get(t.DATE);
hh=t.get(t.HOUR_OF_DAY); mm=t.get(t.MINUTE); ss=t.get(t.SECOND); }
public String getDate() {
return y+\年\月\日\ }
public String getTime() {
return hh+\时\分\秒\ } }
public class EXP3_3{
public static void main(String[] args){ Time t=new Time();
System.out.println(\当前日期:\ System.out.println(\当前时间:\ } }
实验3 Java继承与接口(4学时) 1. 实验目的
掌握继承、抽象类、抽象方法和接口的概念,理解Java继承的优势,掌握extends、implements、super和final关键字的使用,掌握继承过程中构造方法的调用顺序,掌握继承体系中方法覆盖的机制,掌握抽象类和接口的区别,理解类与接口,接口与接口之间的实现与继承关系。
2. 实验类型
设计型
11
3. 实验基本要求
1. (与上课例子一致)假定要为某个公司编写员工工资支付程序,这个公司有各种类型的员工员(Employee),不同类型的员工按不同的方式支付工资: (1)经理(Manager)——每月获得一份固定的工资
(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。 (3)一般工人(Worker)——则按他每月工作的天数计算工资。
根据上述要求试用类的继承和相关机制实现这些功能,设计一个测试类EmployeeDemo,分别创建经理、销售人员和一般工人这三个类的对象,并输出每种员工的工资。(提示:应设计一个抽象的员工类(Employee)描述所有雇员的共同特性,这个类应该提供一个计算工资的抽象方法ComputeSalary(),使得可以通过这个类计算员工的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并给出每种员工工资的计算方法,进而给出它的具体实现。)
2. 假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计:
(1)设计一个基类Student描述学生的共同特征(包括的属性:名字(name),A课程的成绩(classA),B课程的成绩(classB),C课程的成绩(classC),包括的方法:getAverage(),计算3门课的平均成绩)。
(2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类(除了继承父类的属性和方法外,还包括一个方法isPass(),判断该本科生是否可以拿到学位。提示:调用从父类继承来的getAverage()方法获得3门课程的平均成绩)。
(3)设计一个描述研究生的类Graduate,该类继承并扩展Student类(除了继承父类的属性和方法外,还包括一个方法isPass(),判断该研究生是否可以拿到学位。提示:调用从父类继承来的getAverage()方法获得3门课程的平均成绩)。
(4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
3.编写程序,定义一个计算面积的接口Area,其中包含一个计算面积的抽象方法calculateArea()。然后设计圆Circle和矩形Rectan两个类实现这个接口中的方法。最后定义一个计算圆和矩形的面积的测试类AreaDemo。提示:Circle类包含的属性包括:常量PI(定义为public static final double PI=3.14159),成员变量半径:radius,要实现接口中的方法calculateArea();Rectan类包含的属性包括:矩形的长和宽,要实现接口中的方法calculateArea()。
4. 实验思考题
1.阅读如下所示的3个Java类的定义,分析它们之间的关系,写出运行结果。 class SuperClass { int x;
SuperClass() { x=3; System.out.println(\ }
12
void doSomething() { System.out.println(\}
}
class SubClass extends SuperClass { int x;
SubClass() { super(); //调用父类的构造方法 x=5; //super( ) 要放在方法中的第一句 System.out.println(\ }
void doSomething( ) {
super.doSomething( ); //调用父类的方法 System.out.println(\ System.out.println(\
} }
public class Inheritance {
public static void main(String args[]) { SubClass subC=new SubClass(); subC.doSomething(); } }
2.以下程序的运行结果? public class EXP3_7 {
protected String xm; //具有保护修饰符的成员变量 protected int xh;
void setdata(String m,int h) //设置数据的方法 {
xm =m; xh = h; }
public void print() //输出数据的方法 {
System.out.println(xm+\ } }
class EXP3_8 extends EXP3_7{ protected String xy; protected String xi;
public static void main(String args[]){ EXP3_7 p1 = new EXP3_7();
13
p1.setdata(\李四\ p1.print();
EXP3_8 s1 = new EXP3_8() ;
s1.setdata(\张三\调用父类的成员方法 s1.xy=\成都信息工程学院\访问本类的成员变量 s1.xi=\计算机系\访问本类的成员变量 s1.print();
System.out.print(s1.xm+\ } }
3.以下程序的运行结果? class Point {
protected int x, y; Point(int a, int b) { setPoint(a, b); }
public void setPoint(int a, int b) { x=a; y=b; } }
class Line extends Point { protected int x, y; Line(int a, int b) { super(a, b); setLine(a, b); }
public void setLine(int x, int y) { this.x=x+x; this.y=y+y; }
public double length() {
int x1=super.x, y1=super.y, x2=this.x, y2=this.y;
return Math.sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)); }
public String toString() {
return \直线端点:[\ x + \直线长度:\ } }
public class EXP3_10{
public static void main(String args[]) { Line line=new Line(50, 50);
System.out.println(\
14
} }
4.以下程序的运行结果? interface NL{ //定义接口 int year = 2004; int age(); void output(); }
public class EXP3_13 implements NL{ //实现接口 String xm; //类自己的成员变量(姓名) int csrq; //类自己的成员变量(出生日期) public EXP3_13(String n1,int y){ //类构造方法 xm = n1; csrq = y; }
public int age(){ //实现接口的方法
return year - csrq; //这里直接使用了接口中的常量year }
public void output() { //实现接口的方法
System.out.println(this.xm +\今年的年龄是\岁\ }
public static void main (String args[]) //类自己的成员方法 {
NL a = new EXP3_13(\张三\ a.output(); } }
实验3 Java多态与异常处理(4学时) 1. 实验目的
掌握类的多态性、异常和错误的概念,掌握多态的使用方法,掌握instanceof、throw和throws关键字的含义,掌握子类对象与父类对象的关系,掌握异常的捕获和抛出,掌握使用try-catch-finally结构进行异常处理,学会用throws从函数中抛出异常,学会创建自定义异常,以及手工抛出(产生)异常的throw语句。
2. 实验类型
设计型
15