Java超类catch和子类catch

时间:2015-01-10 09:14:49

标签: java exception try-catch subclass superclass

我很困惑。以下两个陈述是否准确?

  1. 类的对象不了解或访问其任何子类。

  2. 关于异常处理的主题,超类catch将捕获其所有子类。

  3. 我认为有一些我没有看到的逻辑。在1中,超类不知道子类,而在2中,超类确实知道子类。对此有任何澄清将不胜感激。

3 个答案:

答案 0 :(得分:1)

超类本身并不知道它的子类,但是jvm有这方面的知识,而jvm正在为异常处理,多态等工作。

答案 1 :(得分:0)

这两个陈述都是真的。执行“catch”子句时,它会获取异常的特定实例。它可以查看该实例的超类,并检查这些超类中的任何一个是否与“catch”子句中指定的类匹配。它不需要检查“catch”子句中指定的类的所有可能子类,因此语句1成立。

答案 2 :(得分:0)

是的,没错。

  1. 类的对象不了解或访问其任何子类。

    Object是父类。考虑它类似于现实世界的父母,他们事先并不知道他们将拥有多少孩子,他们将拥有什么额外的功能或者他们将要做的事情除了我已经拥有的,即相同的具有Object类的功能,即equals / hashCode / wait / notify等。所以它安全地假设我的孩子会覆盖说等于if等于对象类是否可以处理这些现有功能的所有内容。

  2. 关于异常处理的主题,超类catch将捕获它的所有子类。

    是。再次考虑与上面相同的例子。人们说" Jr。 xyz你好吗?"人们也认识你,可以像#34;嗨pqr"而且人们也会用你父母的名字认识你。这里的概念类似。如果它看到catch块中的完全匹配,它将执行相同的块,否则它将转到它的父catch块。