一类可以扩展两个类吗?

我的class级应该同时扩展两个class级:

public class Preferences extends AbstractBillingActivity { public class Preferences extends PreferenceActivity { 

怎么做?

更新 由于这是不可能的,我应该如何使用AbstractBillingActivity与首选项呢?

Upd2 。 如果我使用接口,我应该创build:

  1. BillingInterface

     public interface BillingInterface extends PreferenceActivity, AbstractBillingActivity { } 
  2. PreferenceActivity

     public interface PreferenceActivity { } 
  3. AbstractBillingActivity

     public interface AbstractBillingActivity { void onCreate(Bundle savedInstanceState); } 

接着

 public class Preferences implements BillingInterface { 

Java不支持多重inheritance。

我可以想到几个解决方法:

第一个是聚合:创build一个以这两个活动为字段的类。

第二个是使用接口。

第三个是重新考虑你的devise: Preferences类是否既是PreferenceActivity AbstractBillingActivity

Java不支持多重inheritance。 您可以实现多个接口,但不能扩展多个类。

Java 1.8(以及Groovy和Scala)有一个名为“ Interface Defender Methods ”的东西,它是与预定义的默认方法体的接口。 通过实现多个使用defender方法的接口,可以有效地扩展两个接口对象的行为。

此外,在Groovy中,使用@Delegate注释,可以扩展两个或更多类的行为(当这些类包含相同名称的方法时,需要注意)。 这段代码certificate了这一点:

 class Photo { int width int height } class Selection { @Delegate Photo photo String title String caption } def photo = new Photo(width: 640, height: 480) def selection = new Selection(title: "Groovy", caption: "Groovy", photo: photo) assert selection.title == "Groovy" assert selection.caption == "Groovy" assert selection.width == 640 assert selection.height == 480 

另一个解决scheme是创build一个扩展第二个类的私有内部类。 例如一个扩展JMenuItemAbstractAction

 public class MyClass extends JMenuItem { private class MyAction extends AbstractAction { // This class can access everything from its parent... } } 

不,你不能把课程扩展到两个class级。

一个可能的解决scheme是使其从另一个类扩展,并使该类再次从另一个类延伸。

你所问的是多重inheritance,由于多种原因,这是非常有问题的。 Java中特别避免了多重inheritance; 所做的select是支持多接口的实现,相反,这是适当的解决方法。

Java不支持多重inheritance。 但是,您的问题可能会使用接口来解决。

最简单的解决scheme是为AbstractBillingActivityPreferenceActivity创build一个接口,并同时实现它们。

Java不支持多重inheritance,这就是为什么你不能同时从两个不同的类中扩展一个类。

而是使用单个类来扩展和使用interfaces来包含附加function。