gpt4 book ai didi

Java类实现错误

转载 作者:行者123 更新时间:2023-11-29 05:12:15 25 4
gpt4 key购买 nike

所以我在做一个项目,我有 2 个接口(interface)。

我们称他们为:

public interface A{

}
public interface B{

}

我有 4 个不同的类来实现这些接口(interface),因为我需要在本地或通过网络运行它们:

public class Class1 implements A{ 
// logical implementation of A
}
public class Class2 implements B{
// logical implementation of B
}
public class Class3 implements A{
// proxy implementation of A
}
public class Class4 implements B{
// proxy implementation of B
}

Class1和Class3实现了接口(interface)的逻辑,Class2和Class4实现了这些接口(interface)的Proxies。我现在正在尝试测试这些类,并且我有以下代码:

private static Class1 object1;
private static Class2 object2;

if (localTest) {
object1 = new Class1();
object2 = new Class2();
} else {
object1 = new Class3();
object2 = new Class4();
}

根据上面的代码,我得到的错误是object1的类与Class3不兼容,object2的类与Class4不兼容。

既然Class1和Class3实现了相同的接口(interface),Class2和Class4实现了相同的接口(interface),为什么会报错?

如果我不能提供更多细节,我很抱歉。

谢谢

最佳答案

当两个类实现相同的接口(interface)时,您不能将一个类的实例分配给另一个类类型的变量。这两个类可能有不同的方法(接口(interface)的通用方法除外)。因此,Class1 变量只能保存 Class1 的实例或 Class1 的子类。

如果您对变量使用接口(interface)类型 AB 会更有意义,因为 A 类型的变量可以保存该接口(interface)的任何实现。

private static A object1;
private static B object2;

if (localTest) {
object1 = new Class1();
object2 = new Class2();
} else {
object1 = new Class3();
object2 = new Class4();
}

关于Java类实现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28011100/

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