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大小写-因此,请省略cand i前缀。)

以上是 Java类的转换接口 的全部内容, 来源链接: utcz.com/qa/402508.html

回到顶部