Johnny Rottenweed
Johnny Rottenweed

Reputation: 337

Inheriting from two classes with Java?

I have made a class to include a custom title bar with my apps logo on it. This works well except that for the majority of my classes I need to be able to inherit that functionality as well as that of say a ListActivity. What to do?

Any help appreciated.

Upvotes: 1

Views: 1074

Answers (2)

Talha
Talha

Reputation: 12717

you should favor composition (and delegation) over inheritance :

   public interface FirstClassInterface {
       void method1();
   }

   public interface SecondClassInterface {
       void method2();
   }

   public class FirstClass implements FirstClassInterface {
       // ...
   }

   public class SecondClass implements SecondClassInterface  {
       // ...
   }

   public class FirstAndSecondClass implements FirstClassInterface , SecondClassInterface       
    {
       private FirstClassInterface firstclass;
       private SecondClassInterface secondclass;

       public FirstAndSecondClass(FirstClassInterface firstclassinterface, SecondClassInterface   secondclassinterface) {
           this.firstclass= firstclassinterface;
           this.secondclass= secondclassinterface;
       }

       public void method1() {
           this.firstclass.method1();
       }

       public void method2() {
           this.secondclass.method2();
       }

       public static void main(String[] args) {
           FirstAndSecondClass t = new FirstAndSecondClass(new FirstClass(), new SecondClass());
           t.method1();
           t.method2();
       }
   }

Upvotes: 8

Sam
Sam

Reputation: 86958

In Java, you cannot have:

class MyClass extends ClassA, ClassB { ... }

Depending on what you are doing, it might be possible to use:

class ClassB extends ClassA { ... }

class MyClass extends ClassB { ... }

Upvotes: 3

Related Questions