黑马程序员技术交流社区

标题: 关于接口的问题 [打印本页]

作者: 我为你着迷    时间: 2014-4-25 21:05
标题: 关于接口的问题
大家好! 我想问下就是毕老师说接口中的方法不可以抛出异常,只能try处理,是为什么呀?  帮忙解答下,跪谢!

作者: 秦久启    时间: 2014-4-25 21:12
异常在子父类覆盖中的体现;(看看这个,相信你就明白了)

1,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。

2,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类,当然你也可以不用抛的,你自己可以try...catch处理的话。


class AException extends Exception
{
}
class BException extends AException
{
}
class CException extends Exception
{
}
/*
Exception
|--AException
      |--BException
|--CException
*/
class Fu
{
void show()throws AException
{  
}
}
class Zi extends Fu
{
void show()throws AException //这里可以抛出AException或BException ,但是不能抛出CException
{
}
}

3,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
也就是说父类抛出了A,B,C,D 异常的话,那么子类只能抛出B,C,D或者是C,D...异常。






作者: 你为谁归来    时间: 2014-4-25 21:14
接口中的方法都的没实现的,由实现了接口的类来实现。如果你在方法上抛出了异常,是抛给调用者处理,调用者无法处理的,所以只能try不能抛!
作者: fufeng    时间: 2014-4-25 21:31
    其实你可以将一个类实现了接口,认为是一个类继承了接口,认为该接口就是该类的子类,
    父类认为是父亲,子类认为是儿子,儿子仿照父亲也做了类似父亲做的事情,然后说这个事情有异常,父亲当然就不干了,我做都没有问题,你做怎么会有问题呢?真是大不敬啊!所以,儿子就不能把这个问题,抛出来,免得不孝顺,但是可以自己在内部把它处理了
     当然如果父亲认为做这件事情,确实有一些异常,儿子做的时候就只能说出父亲申明的异常,自己不就能搞出新的异常来,也就是老爸说有这些这些问题,儿子要么说没有异常,要么说,有一部分老爸说的异常,但是自己的新异常,则只能自己处理了,你看儿子是多么的孝顺啊
     这样理解,应该也是没有多大问题的

作者: fufeng    时间: 2014-4-25 21:32
其实你可以将一个类实现了接口,认为是一个类继承了接口,认为该接口就是该类的父类
作者: 我为你着迷    时间: 2014-4-25 22:21
fufeng 发表于 2014-4-25 21:31
其实你可以将一个类实现了接口,认为是一个类继承了接口,认为该接口就是该类的子类,
    父类认为是 ...

呵呵 谢谢啊  
作者: 我为你着迷    时间: 2014-4-25 22:23
你为谁归来 发表于 2014-4-25 21:14
接口中的方法都的没实现的,由实现了接口的类来实现。如果你在方法上抛出了异常,是抛给调用者处理,调用者 ...

嘿嘿 谢谢哦
作者: 我为你着迷    时间: 2014-4-25 22:28
秦久启 发表于 2014-4-25 21:12
异常在子父类覆盖中的体现;(看看这个,相信你就明白了)

1,如果父类或者接口的 ...

嗯  明白了 谢谢啊   
作者: pray    时间: 2014-4-25 22:46

我有家的感觉~~你知道吗
作者: pray    时间: 2014-4-25 22:48
曾经拥有的不要忘记;不能得到的更要珍惜;属于自己的不要放弃;已经失去的留作回忆。我刚来~~~嘿嘿~~
作者: pray    时间: 2014-4-25 22:57
我有家的感觉~~你知道吗
作者: pray    时间: 2014-4-25 23:21
你咋不理我了呢
作者: pray    时间: 2014-4-25 23:28
怎么说来眼睛小真的很好
作者: Xin、仰    时间: 2014-4-25 23:37
顶.......
作者: 四川男人    时间: 2014-4-26 00:59
接口中的方法都是抽象的,没有方法体,抛出异常jvm没法处理,所以只能自己try
作者: 我为你着迷    时间: 2014-4-26 07:30
四川男人 发表于 2014-4-26 00:59
接口中的方法都是抽象的,没有方法体,抛出异常jvm没法处理,所以只能自己try ...

谢谢啊:)
作者: 我为你着迷    时间: 2014-4-26 07:31
pray 发表于 2014-4-25 22:46
我有家的感觉~~你知道吗

哥们 说的啥呀!
作者: 我为你着迷    时间: 2014-4-26 07:34
pray 发表于 2014-4-25 22:48
曾经拥有的不要忘记;不能得到的更要珍惜;属于自己的不要放弃;已经失去的留作回忆。我刚来~~~嘿嘿~~ ...

这简直是神回复啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2