我有一个关于接口和类实现接口的问题。
这是我的代码:
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
)只要参考确实是安全的does参考一个实例cMyClass
.
然而,这通常是一个坏主意。使用接口的全部目的是能够与any实现 - 它将抽象与实现分开。如果您需要特定的实现,您不妨将类型设置为i
just cMyClass
首先。
所以假设不是调用cMyClass
构造函数本身,您会收到一个类型的方法参数iMyInterface
- 投射到是个坏主意cMyClass
那时,因为它可能是不同的接口的实现。
(另外,最好开始遵循 Java 命名约定,该约定规定类和接口应该采用 Pascal 大小写 - 所以放弃c
and i
前缀。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)