Java 将接口转换为类

2023-11-24

我有一个关于接口和类实现接口的问题。

这是我的代码:

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(使用前将#替换为@)

Java 将接口转换为类 的相关文章

随机推荐