当前位置: 技术问答>java相关
一道SCJP题的非技术性问题
来源: 互联网 发布时间:2015-03-17
本文导语: public class Foo { public Foo() { //do something } protected Foo(int i) { //do something } protected void method() { //do something } } public class Hello extends Foo { //member method } Which methods ar...
public class Foo
{
public Foo()
{
//do something
}
protected Foo(int i)
{
//do something
}
protected void method()
{
//do something
}
}
public class Hello extends Foo
{
//member method
}
Which methods are corrected added to comments "member method"?
A. public void Foo(){}
B. public void method(){}
C. protected void method(){}
D. private void method(){}
题目不难,可我就搞不清楚了,这道题问的是
哪些方法可以被加到程序中去?
还是
哪些方法可以同时被加到程序中去?
~~
两种理解给出的答案会不一样的啊
{
public Foo()
{
//do something
}
protected Foo(int i)
{
//do something
}
protected void method()
{
//do something
}
}
public class Hello extends Foo
{
//member method
}
Which methods are corrected added to comments "member method"?
A. public void Foo(){}
B. public void method(){}
C. protected void method(){}
D. private void method(){}
题目不难,可我就搞不清楚了,这道题问的是
哪些方法可以被加到程序中去?
还是
哪些方法可以同时被加到程序中去?
~~
两种理解给出的答案会不一样的啊
|
题目的意思是问可能被加进去的所有可能的方法,也就是提问者所说的同时,答案应该是abc.
|
题目中所说的是那一条语句可以被加进去,二不是并存,因为对于单独的语句a,b,c都是正确的,但是显然b和c不能同时存在,所以此题是问那条语句可以被加进去,而不是同时,因此,此题应该选a,b,c。
附:
一:子类中重写的方法的访问权限不能比父类的低,如果父类的权限是public,则子类的该方法只能是public,父类的是protected,则子类的可以是protected或者public,依次类推。
二:子类中的该方法不能比父类中的该方法抛弃(throws)更多种类的异常。
附:
一:子类中重写的方法的访问权限不能比父类的低,如果父类的权限是public,则子类的该方法只能是public,父类的是protected,则子类的可以是protected或者public,依次类推。
二:子类中的该方法不能比父类中的该方法抛弃(throws)更多种类的异常。
|
按题目的意思应该是先abc没错,
可是这个题目中的两个类都是public
这好像在编译时是不能通过的,
是题目本身的问题吗?
//请问作者,不会是抄题时不小心抄错了吧
可是这个题目中的两个类都是public
这好像在编译时是不能通过的,
是题目本身的问题吗?
//请问作者,不会是抄题时不小心抄错了吧
|
同意楼上观点:
class Father{
void m() throws FatherE0,FatherE1,。。。{}
}
class Son extends Father{
void m() throws SonE0,SonE1,。。。 {}
}
则SonEs中的每一个SonE(x)都必须是FatherEs中某个FatherE(x)/或其子类
这大概是因为override时,编译时是按照父类方法来检查try/catch的,如果
子类方法掷出了“更为宽泛/更多种类”的异常,则运行时某个“多出来”的
异常会被”忽略“掉。
class Father{
void m() throws FatherE0,FatherE1,。。。{}
}
class Son extends Father{
void m() throws SonE0,SonE1,。。。 {}
}
则SonEs中的每一个SonE(x)都必须是FatherEs中某个FatherE(x)/或其子类
这大概是因为override时,编译时是按照父类方法来检查try/catch的,如果
子类方法掷出了“更为宽泛/更多种类”的异常,则运行时某个“多出来”的
异常会被”忽略“掉。