动手动脑课堂作业7---------

动手动脑1

CatchWho.java运行结果:

CatchWho2.java运行结果:

EmbedeFinally.java运行结果:

finally语句块一定会执行吗?

SystemExitAndFinally.java运行结果:

只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行。如果在try语句块之前返回(return)或者抛出异常,try对应的finally语句块就不会执行。

动手动脑2

如何跟踪异常的传播路径?

  • 当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序。
  • 可使用printStackTrace 和 getMessage方法了解异常发生的情况:
    • printStackTrace:打印方法调用堆栈。
    • 每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息。

PrintExpressionStack.java运行结果:

动手动脑3

回答问题

.   左边的程序运行结果是什么?

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

在调用的时候,对象是子类的,就调用子类的方法,对象是父类的就调用父类的方法。

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

1当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。这个特性实际上就是面向对象“多态”特性的具体表现。

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

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

原文地址:https://www.cnblogs.com/qingqing2015/p/4965078.html