gpt4 book ai didi

java - 一个类从两个来源继承方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:01 26 4
gpt4 key购买 nike

这很难解释,但显示一段 Ruby 代码很简单:

有两个实现方法的模块:

module Foo
def one
print "ONE!"
end
end

module Bar
def two
print "TWO!"
end
end

有一个包含它们的类:

class Test
include Foo
include Bar
end

现在您的类 Test 可以调用这两个方法。


据我所知,Java 中没有这样的东西。接近的概念是:

多重继承

Java 不支持。

接口(interface)

它们是方法契约——没有实现。您的类 Test 需要自己实现这些方法,而这正是我想要避免的。只是为了避免重复编写相同的代码(我还有其他几个类,其中一些可能也想实现这些方法)。

抽象类

我仍然需要同时继承两个类。


那么这里推荐的解决方案是什么?

最佳答案

在 Java 8 中,您可以使用 default 方法实现此目的,但这绝不是 default 的意图,因此这可能是个坏建议:

interface Foo {
default void one () {
System.out.println("ONE!");
}
}

interface Bar {
default void two () {
System.out.println("TWO!");
}
}

class FooBar implements Foo, Bar {

}
public void test() {
FooBar fooBar = new FooBar();
fooBar.one();
fooBar.two();
}

但是,我想重申@Thomas 在他的评论中所说的话需要多重继承通常是设计缺陷的标志。

关于java - 一个类从两个来源继承方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951234/

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