第二套题

一、简答题

1. 什么是多态性? 方法的重载和覆盖有何区别? 阅读下列代码,指出其中存在的重载和覆盖, 写出输出结果是什么?解释为什么这样输出? (15分)

class Class1 
{
    public void find() {
        System.out.println("Class1.find");
    }
}
class Class2 extends Class1
{
    public void find() {
        System.out.println("Class2.find");
    }  
}
class Class3 {
    public void get(Class1 one) {
        System.out.println("get(Class1)");
        one.find();
    }
    public void get(Class2 two) {
        System.out.println("get(Class2)");
        two.find();
    }
}
public class Test1 
{
    public static void main(String[] args) 
    {
        Class1 one = new Class2();
        Class3 three = new Class3();
        three.get(one);
    }
}

答:多态性是指允许不同类的对象对同一消息作出响应,多态有两种表现形式:重载和覆盖;

Class3中的2个get()方法为重载,方法名相同,参数不同;

Class2中的find()方法为覆盖,方法名和参数都一样, 子类Class2重写了父类Class1中的find()方法;

输出结果:get(Class1)

Class2.find

输出原因。。。。。。。。。。。。。。。。。。。。

 

2、请说说final、finally的区别和作用,举例说明用法;另外用自己的语言介绍throw/throws有什么联系和区别?在程序中应如何使用?(15分)

答:final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承。Finally作为异常处理的一部分,只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行。

3、编写一个描述老师基本情况的类,属性包括姓名,教工号,基本工资,岗位工资和绩效工资,方法包括信息输出,设置姓名和教工号,设置三种工资金额,计算总工资(三种工资加起来)和税后工资(按如下方式计算,3000以内不收税,3000-5000之间的部分扣10%,大于5000的部分扣15%)。在main方法中对方法进行测试(15分)

答:运行代码

运行截图:

 

4、Java中实现多线程有几种方式?这几种方式有什么区别?然后采取其中一种方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作(数据初始值为10),其中线程对象1对数据执行乘以10的操作,线程对象2对数据执行乘以20的操作, 对象3对数据执行+30的操作,线程对象4对数据执行+40的操作,要求考虑线程同步,保证每一步数据操作的正确性。要求提供程序代码以及运行结果截图(15分)

答:

代码:

 

运行截图:

 

二、编程题

1、编写一个图形用户界面程序,包含两个按钮,一个信息标签(label)和一个显示面板,两个按钮分别为“掷色子”和“移动”,在显示面板中显示一个小汽车(用小圆\矩形以及线绘制),随机设定小汽车的初始位置,当点击“掷色子”按钮,随机产生移动信息(上移,下移,左移,右移,移动几步),并显示在信息标签中,点击移动,按照产生的移动信息,让小汽车进行移动。要求提供完整程序代码以及运行结果截图(20分)

答:

 

运行截图: