Mik*_*per 4 java oop polymorphism
在两个接口应用于对象的情况下,有两个重载方法只是通过区分这些接口而不同,哪个方法被调用?
在代码中.
interface Foo {}
interface Bar {}
class Jaz implements Foo, Bar {}
void DoSomething(Foo theObject)
{
System.out.println("Foo");
}
void DoSomething(Bar theObject)
{
System.out.println("Bar");
}
Jaz j = new Jaz();
DoSomething(j);
Run Code Online (Sandbox Code Playgroud)
将调用哪种方法?DoSomething(Foo)还是DoSomething(Bar)?两者都没有比另一个更具体,我认为没有理由为什么应该调用一个而不是另一个,除了一个被指定为first/last.
编辑:使用这种类型的代码是可以强制一种或另一种方法?
Cli*_*int 12
这应该是编译器错误.
这有效:
DoSomething((Foo)j);
DoSomething((Bar)j);
Run Code Online (Sandbox Code Playgroud)
lc.*_*lc. 10
我很确定上面的内容不会编译.DoSomething(j)
是一个模棱两可的电话,将导致错误.
为了得到它来编译,你必须明确投j
作为Foo
或Bar
当你调用DoSomething
,例如DoSomething((Foo)j)
.
归档时间: |
|
查看次数: |
510 次 |
最近记录: |