zoukankan      html  css  js  c++  java
  • 多态与异常处理

    (1)怎样判断对象是否可以转换?参看实例: TestInstanceof.java

    运行结果:

     

    (2)运行TestCast.java

    d=m;d=c;c=(Cat)m;出现错误

    (3)运行ParentChildTest.java

    1.程序运行结果是什么?

     

    1. 你如何解释会得到这样的输出?

    第一个输出创建了一个Parent对象,所以调用父类的构造函数。

    第二个输出创建了一个Child对象,所以调用子类的构造函数。

    将子类child对象赋值给父类,将父类覆盖调用了子类的创建方法。

    第四个parent.myValue++是对父类的变量进行运算,而parent.myValue()实际上调用的还是子类的构造方法。

    第五个((Child)parent).myValue++强制类型转化。

    子类和父类具有相同的方法和字段,定义的parent为父类,child为子类,所以parent调用父类的方法,child调用子类型的方法。子类中的myValue值代替或隐藏父类值。

    3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性?

    当子类与父类拥有一样的方法,并且让父类变量引用一个子类对象时,到底调用那个方法,由对象自己真实类型决定:对象时子类的,它就调用子类的方法,是父类型的,它就调用父类型的方法。

    如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。

    如果子类被当作父类使用,则通过子类访问的字段是父类的。

    阅读并运行AboutException.java示例

     

    EmbedFinally.java程序运行的结果

     

    辨析:finally语句块一定会执行吗?

    请通过 SystemExitAndFinally.java示例程序回答上述问题

    不一定执行。Try块中有System.exit(0);这样的语句,finally语句不会执行。

     PrintExpressionStack.java示例

     

    Java异常处理总结:

    一般构造如下

    try{程序代码}catch(异常类型异常的变量名1){程序代码}catch(异常类型异常的变量名2){程序代码} finally{程序代码}

    catah可以有多个,用来匹配多个异常,匹配上多个中的一个后,执行catch语句块时仅仅执行匹配的异常。Catch的类型是自己定义的,表示代码抛出异常类型,异常的变量名表示抛出的异常对象的引用。

    ExceptionLinkInRealWorld.java运行

     

    动手动脑:

    实验要求:

    编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。

    源代码:

    import java.util.InputMismatchException;

    import java.util.Scanner;

    public class Test {

    public static void main(String[] args) {

    // TODO 自动生成的方法存根

    int n;             

    Scanner sc=new Scanner(System.in);

    System.out.println("请输入一个整数(0~100):");

    int i=0;  //控制出入正确时,判断完成结束程序

    for(;;)   //循环,直到输入正确

    {

    try

    {

      n=sc.nextInt();

      if(n<0||n>100){  //判断整数范围是否正确

      System.out.println("输入整数不在范围!");

      }

      else{

      

           i=1;

           if(n<60&&n>=0){

            System.out.println("不及格");

              }

           else if(n<70){

            System.out.println("及格");

              }

           else if(n<80){

            System.out.println("");

              }

           else if(n<90){

                System.out.println("");

              }

           else if(n<=100){

            System.out.println("");

              }

          }

     }

            catch(InputMismatchException e)

    {

             sc.next();//读取到有效字符后才可以结束输入

             System.out.println("输入格式不正确,请输入整数(0~100)");

                

    }

    if(i==1)//结束循环

    {

    break;

    }

    }

    }

    }

    运行结果截图:

     

  • 相关阅读:
    Collection 和 Collections的区别?
    事务是什么?有哪些属性,并简要说明这些属性的含义。
    jsp有哪些内置对象?作用分别是什么?(至少三个)
    谈谈对XML的理解?说明Web应用中Web.xml文件的作用?
    类有哪三个基本特性?各特性的优点?
    Oracle安装完成后,如何用命令行启动和关闭数据库?
    请说明SQLServer中delete from tablea & truncate table tablea的区别
    试述数据库完整保护的主要任务和措施。
    存储过程和函数的区别
    性能
  • 原文地址:https://www.cnblogs.com/java-test/p/4962937.html
Copyright © 2011-2022 走看看