Possible Duplicates:
Cheat single inheritance in Java !!
Why is Multiple Inheritance not allowed in Java or C#?
Multiple Inheritance in java.
I know that we can use interfaces to inherit from multiple classes but is it possible to inherit the state as well?
How can I inherit methods with definitions from 2 classes and have them in a third class in Java?
Unlike some other popular object oriented programming languages like C++, java doesn't provide support for multiple inheritance in classes.
You can derive a class from any number of base classes. Deriving a class from more than one direct base class is called multiple inheritance. The order of derivation is relevant only to determine the order of default initialization by constructors and cleanup by destructors.
A class can implement multiple interfaces and many classes can implement the same interface.
- [Instructor] In Java, we can achieve inheritance by using the keyword extends. The subclass will use this keyword with the superclass in its class definition to inherit all the properties and behaviors of the superclass.
Multiple inheritance is not allowed in Java. Use delegates and interfaces instead
public interface AInterface {
public void a();
}
public interface BInterface {
public void b();
}
public class A implements AInterface {
public void a() {}
}
public class B implements BInterface {
public void b() {}
}
public class C implements AInterface, BInterface {
private A a;
private B b;
public void a() {
a.a();
}
public void b() {
b.b();
}
}
Since Java 8 it's possible to use Default Methods in Interfaces.
Short answer: You can't. Java only has multiple inheritance of interfaces.
Slightly longer answer: If you make sure the methods you care about are in interfaces, then you can have a class that implements the interfaces, and then delegates to instances of the "super classes":
interface Noisy {
void makeNoise();
}
interface Vehicle {
void go(int distance);
}
class Truck implements Vehicle {
...
}
class Siren implements Noisy {
...
}
class Ambulance extends Truck implements Noisy {
private Siren siren = new Siren();
public makeNoise() {
siren.makeNoise();
}
...
}
You can not, Java doesn't support multiple inheritance. What you could do is composition.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With