【发布时间】:2017-05-11 11:16:31
【问题描述】:
我有一个场景,我们曾经使用 C# 中的显式实现来实现接口成员。目前我需要在 JAVA 中实现相同的行为,但无法显式调用接口成员,因此将实现的成员标记为 public 会显示错误。我是 JAVA 新手,请告诉我如何在 JAVA 中实现相同的行为。
C# 代码:
public class WF_33470: IData
{
private string m_data = string.Empty;
string IData.Element
{
get
{
return m_data;
}
}
string IData.Data()
{
get
{
return "Hello World";
}
{
}
internal interface IData
{
string Element
{
get;
}
string Data();
}
Java 代码:
public class WF_33470 implements IData
{
private String m_data = "";
String getElement()throws Exception{//throws error to change the modifier to be public, but i need to achieve explicit implementation here
return m_data;
}
String Data()throws Exception{//throws error to change the modifier to be public, but i need to achieve explicit implementation here
return "Hello World";
}
}
interface IData
{
String getElement()throws Exception;
String Data()throws Exception;
}
【问题讨论】:
-
在java中的
interface方法被自动定义为public,因为你不能降低继承时的可见性,你需要将它们定义为公共的,同时实现接口,以及(public String Data()throws Exception{...}) -
explicit implementation是什么意思? @KevinEsche 是对的,界面始终公开 (related QA)。 -
有没有可能降低继承成员的知名度?
-
@user2810266,改用
abstract class怎么样?虽然它解决了应该是公开的问题,但它会阻碍你在实现类上做extends..设计决策..