java – 从两个源继承方法的类

这很难解释,但显示一段 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支持.

接口

他们是方法合同 – 没有实施.你的类Test需要实现方法本身,这就是我想要避免的.只是为了不写两次相同的代码(我有其他几个类,其中一些也可能想要实现这些方法).

抽象类

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

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

解决方法

在Java 8中,你可以使用方法实现这一点,但这绝不是认的意图所以这可能是一个糟糕的建议:

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在评论中所说的内容.多重继承的需要往往是设计缺陷的标志.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...