Java类的转换接口
我对接口和类实现接口有疑问。
这是我的代码:
interface iMyInterface { public iMethod1();
}
public class cMyClass implements iMyInterface {
public iMethod1() {
// some code
}
protected iMethod2() {
// some code
}
}
我想创建一个这样的实例iMyInterface
:
iMyInterface i = new cMyClass();i.iMethod1();
可以,但是如何iMethod2()
从接口实例中调用?这是安全的吗?
((cMyClass)i).iMethod2();
感谢帮助。
回答:
是的,就可以了(如果你改变的声明cMyClass
来实现iMyInterface
),并作为参考真的很安全,只要 不
参考的实例cMyClass
。
但是,这通常是个坏主意。使用接口的全部目的是能够与 任何 实现一起使用-
它是将抽象与实现分开。如果你然后将需要一个具体的实现,你还不如让的类型i
正好cMyClass
与开始。
因此,假设您不是cMyClass
自己调用构造函数,而是收到类型的方法参数iMyInterface
-那时强制转换cMyClass
为该方法是个坏主意,因为它可能是接口的
不同 实现。
(另外,最好遵循Java命名约定,该约定指出类和接口应使用Pascal大小写-因此,请省略c
and i
前缀。)
以上是 Java类的转换接口 的全部内容, 来源链接: utcz.com/qa/402508.html