gpt4 book ai didi

Java 将接口(interface)转换为类

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:21 24 4
gpt4 key购买 nike

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

这是我的代码:

interface iMyInterface {
public iMethod1();
}

public class cMyClass implements iMyInterface {
public iMethod1() {
// some code
}
protected iMethod2() {
// some code
}
}

我想创建一个 iMyInterface 实例:

iMyInterface i = new cMyClass();
i.iMethod1();

没关系,但是如何从我的接口(interface)实例中调用 iMethod2()?这是否有效且安全:

((cMyClass)i).iMethod2();

感谢您的帮助。

最佳答案

是的,这会起作用(如果您更改 cMyClass 的声明以实现 iMyInterface)并且只要引用确实确实 引用 cMyClass 的实例。

但是,这通常是个坏主意。使用接口(interface)的全部意义在于能够与任何 实现一起工作——它将抽象与实现分开。如果您随后需要一个特定的实现,您不妨将 i 的类型设置为 cMyClass 作为开始。

因此,假设您没有自己调用 cMyClass 构造函数,而是收到一个类型为 iMyInterface 的方法参数 - 转换为 cMyClass 是个坏主意> 在这一点上,因为它可能是接口(interface)的不同实现。

(另外,开始遵循 Java 命名约定是个好主意,它声明类和接口(interface)应该是 Pascal 大小写的 - 所以放弃 ci前缀。)

关于Java 将接口(interface)转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com