Sysena

Tag: heritage

Héritage multiple en Java

by on déc.17, 2009, under Java

Bon, évidement, tout le monde sait qu’on ne peut pas faire d’héritage multiple en Java :o

Néanmoins, on peut quand meme contourner ça de façon élégante, pour peu qu’on ai pas à partager de variable d’instance entre nos 2 classes mères. (notez que les 2 classes « Abstract » ne sont pas abstract pour simplifier l’exemple ;) )

Voila un petit exemple tout balo sur comment s’y prendre.

public interface InterfaceA {
	public void methodA1();
	public void methodA2();
}
public interface InterfaceB {
	public void methodB1();
	public void methodB2();
}
public class AbstractA implements InterfaceA {
	@Override
	public void methodA1() {
		System.out.println("AbstractA#methodA1");
	}
	@Override
	public void methodA2() {
		System.out.println("AbstractA#methodA2");
	}
}
public class AbstractB implements InterfaceB {
	@Override
	public void methodB1() {
		System.out.println("AbstractB#methodB1");
	}
	@Override
	public void methodB2() {
		System.out.println("AbstractB#methodB2");
	}
}
public class ClassC implements InterfaceA, InterfaceB {
	AbstractA a = new AbstractA();
	AbstractB b = new AbstractB();
	@Override
	public void methodA1() {
		a.methodA1();
	}
	@Override
	public void methodA2() {
		a.methodA2();
	}
	@Override
	public void methodB1() {
		b.methodB1();
	}
	@Override
	public void methodB2() {
		b.methodB2();
	}
}


Apres, on va dire, ouééééé, mais bon, pourquoi ne pas simplement faire un getter / setter dans la « ClassC », sur les 2 classes « Absract ». Question de gout, mais si vous voulez du pseudo héritage multiple, y’a pas d’autre solution :)

public interface InterfaceA {
public void methodA1();
public void methodA2();
}
Leave a Comment :, more...