JAVA第二次测试题汇总
面向对象程序设计第二次测试题 一、定义一个抽象的“Role“类,有姓名,年龄,性别等成员变量 1.要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法,该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。 2.从Role类派生出一个“Employee“类,该类具有Role类的所有成员(构造方法除外),并扩展salary成员变量,同时增加一个静态成员变量“职工编号(ID)”。同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法,并提供一个finalsing()方法。 3.“Manager“类继承“Employee“类,有一个final成员变量“vehicle“ 4.在main()方法中制造Manager和Employee对象并测试这些对象的方法 二、品尝饮料 1、建立一个Java抽象类Drink,应当: a、声明一个抽象方法taste(),该方法负责输出饮料的味道; b、声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如: c、声明静态方法getDrink(intdrinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。 2、建立Drink的具体子类: a、分别建立Drink的子类:Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶); b、实现taste()方法,要求在控制台打印各自的味道特征。 3、建立异常类DrinkNotFoundException 继承Exception b、在Drink的方法getDrink(intdrinkType)中声明引发DrinkNotFoundException 异常,当传入的参数没有相对应的饮料类型时,抛出异常。 c、在使用getDrink方法的类中捕捉该异常。 4、建立Test测试类,测试以上内容的正确性 a、编写main方法,通过命令行传参的方式传入某种饮料的类型。 b、在main方法中,调用Drink类的getDrink方法,获得相应的饮料对象。注意捕获DrinkNotFoundException。 c、然后调用该饮料对象的taste()方法,输出该饮料的味道。 5、编译程序,并运行。 三、按下列要求编写程序 创建一个名称为Vehicle的接口,在接口中添加两个带有一个参数的方法start()和stop()。在两个名称分别为Bike和Bus的类中实现Vehicle接口。创建一个名称为interfaceDemo的类,在interfaceDemo的main()方法中创建Bike和Bus对象,并访问start()和stop()方法。 四、按下列要求编写程序。 1、定义一个接口DistanceIF,其中有一个求某点(x,y)与图形位置关系的方法D,方法D的返回值是逻辑型(true表示在图形中,false表示在图形外) 2、定义一个抽象类Shape,它包括 (1)成员属性: X坐标: x ,双精浮点型 //中心点的X坐标 Y坐标: y ,双精浮点型 //中心点的Y坐标 (2)2个重载的构造方法: public Shape () public Shape (double x,double y) (3)1个抽象方法Dist求某点(x,y)到图形中心点的距离 3、定义一个正方形类square继承于Shape,并实现DistanceIF接口。 五、按下列要求编写程序 1、先声明一个抽象类检验,再声明两子类血常规和尿常规检验。先在检验类中声明抽象方法检验,然后在两个子类中对这个方法进行重写。 2、在main()方法中用定义两个检验类型的引用,一个指血常规检验的对象,另一个指尿常规检验的对象,再用这两个引用去调用血常规对象和尿常规检验对象的检验方法。 问题:在上面的调用过程中是否存在运行时多态,为什么? 六、按下列要求编写程序 1、定义一个Person类。 (1)Person类的属性(变量): 姓名:name,字符串类型:String; 性别:sex,字符型:char; 年龄:age,整型:int。 (2)2个重载的构造函数: //调用本类的构造函数设置姓名 public Person(String s) //调用本类的构造函数设置姓名、性别和年龄(要求使用this) public Person(String s,char c,int i) (3)一个成员方法显示姓名、性别和年龄: public String toString() 2、定义Person类的子类Student类 (1)增加成员变量 学号:stuId(String) 学校:School(String) (2)构建一个构造方法对所有成员变量进行初始化(要求使用super) (3)改写toString()方法,显示Student的所有成员成量。 3、在main()方法中定义一个Person类型的引用,用它指向Student 的对象,再用它调用toString()。 问题:上面的调用过程中是否存在多态,为什么? 七、按下列要求编写程序 编写一个复数类,具有实部、虚部成员变量,可以完成加、减、乘、除和获得实部和虚部的方法,并编写主类对其进行测试。 八、按下列要求编写程序 1、声明一个接口Shape2D用来实现二维几何形状类Circle和Rectangle。要把计算面积和周长的方法声明在接口里,同时声明常量PI。然后声明Circle类和Rectangle类分别计算圆面积和矩形面积,实现Shape2D。 2、在main()方法中用定义两个Shape2D类型的引用,一个指向Circle的对象,另一个指向Rectangle的对象,再用这两个引用去调用Circle对象和Rectangle对象的求周长和面积的方法。 问题:在上面的调用过程中是否存在运行时多态,这样做有什么好处?