java从哪里调用这些方法?
interface Action {
void doSomething();
}
和一个实现接口的类
class Greeting implements Action {
public String getGreeting() {
return "Hello, World!" ;
}
public void doSomething() {
System.out.println(getGreeting());
}
}
现在,如果我创建接口的引用并将其分配给类的对象
Action action = new Greeting();
action.doSomething(); // Calls the getGreeting() method and prints it.
这是怎么回事
# 1 楼答案
您已经声明了类型为
Action
的变量action
这意味着您只能使用属于该接口的方法
当您调用它时,它被委托给您的实现,即
Greeting
# 2 楼答案
您看到该错误是因为
action
属于Action
类型,并且该类型没有getGreeting()
方法如果需要访问
getGreeting()
,请将action
声明为Greeting
:或将
action
强制转换为Greeting
:# 3 楼答案
您已将
Greeting
对象分配给Action
类型。虽然Greeting
的对象具有方法getGreeting()
,但是Action
类型不理解它这就是当您尝试
Action
对象时,getGreeting
方法不受支持的原因