中国石油大学(北京)-《java程序设计》-答案

一、题型

   简答题,4题,每题15分,共60分;编程题,2题,每题20分,共40分

二、题目

共两套题,学号末尾数单号学生做第一套,学号末尾数双号学生做第二套题

 

第一套题

一、简答题

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

class C1

{

       public void f() {

              System.out.println("C1.f");

       }

}

class C2 extends C1

{

       public void f() {

              System.out.println("C2.f");

       } 

}

class C3 {

       public void g(C1 one) {

              System.out.println("g(C1)");

              one.f();

       }

       public void g(C2 two) {

              System.out.println("g(C2)");

              two.f();

       }

}

public class Main1

{

       public static void main(String[] args) {

              C1 one = new C2();

              C3 three = new C3();

              three.g(one);

       }

}

 

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

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

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

输出结果:get(Class1)

sClass2.find

输出原因:由于子类Class2的find()方法与父类Class1的方法同名,因此Class2的方法会覆盖Class1的方法。在执行C1ass one = new Class2()语句时,会调用Class1类的构造函数,因此three.get(one)语句会调用传入参数为Class1的get()方法,输出get(Class1)。而由于实际创建的是Class2类的方法,后面的方法调用都会调用子类Class2的方法,因此输出Class2.find

 

 

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

 

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

/*

 * FinalTest被声明为final,所以不能被继承,所有方法都不能被重写。

 * finally中的代码一定会被执行,即使程序被return中。

 */

package com;

 

public final class  FinalTest {

      public static void main(String[] args) {

             FinalTest m = new FinalTest ();

              try {

                  throw new NullPointerException();

                  } catch (NullPointerException e) {

                      System.out.println("程序抛出了异常");

                  } finally {

                      System.out.println("执行了finally语句块");

              }

          }  

}                     

若某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws、throw关键字在方法中抛出异常。throw关键字通常用于方法体中,并且抛出一个异常对象,程序在执行到throw语句时立即终止,它后面的语句都不执行。throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可以使用逗号分隔,使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。

package com;

      /*

       * 在类ThrowTest中创建pop()方法,在该方法中抛出Exception异常,在主方法中调用该方法,并实现异常处理

       */

      public class ThrowTest {   //创建类

          static void pop() throws Exception {

              //定义方法并抛出异常

              int a=1/0;//除数为0

          }

          public static void main(String[] args) {//主方法

 

95分答案,想了解的加我weixin 吧:chenjing-1125

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值