Начнем с того, что вопрос задан некорректно =)
Если нельзя наследоваться от A и B одновременно, то таки нельзя. Никак.
Если нужно, чтобы было можно использовать объект класса C там, где обычно используется класс A и/или там, где используется класс B, то можно сделать 2 интерфейса, IA и IB и в классе C унаследоваться от этих 2 интрефейсов.
Пример:
Код AS3:
// описание признаков
public interface IA {
fucntion doA():void;
}
// описание признаков
public interface IB {
function doB():void;
}
// реализация признаков
public class A implements IA
{
public function doA():void {
trace('doA called on A!');
}
}
// реализация признаков
public class B implements IB
{
public function doB():void {
trace('doB called on B!');
}
}
// класс C наследует 2 интерфейса
// то есть обладает признаками, описанными в IA и в IB одновременно
// однако реализация методов doA() и doB() в классе С отличается от классов A и B
// и это нормально
public class C implements IA, IB {
public function doA():void {
trace('doA called on C!');
}
public function doB():void {
trace('doB called on C!');
}
}
...
public function useA(a:IA):void
{
a.doA();
}
public function useB(b:IB):void
{
b.doB();
}
...
// использование C там, где ожидается IA и/или IB
useA(new C()); // работает, так как C наследует интерфейс IA
useB(new C()); // работает, так как C наследует интерфейс IB
Если нужно чтобы поведение класса C было таким же, как у класса A и одновременно таким же, как у класса B, то нужно использовать композицию (возможно, это тот паттерн, о котором хотели услышать в ответ на вопрос).
Пример:
Код AS3:
// класс C использует реализацию методов doA() и doB() из классов A и B
// то есть его поведение совпадает с каждым из них
public class C
{
public var _a:A;
public var _b:B;
public function C() {
_a = new A();
_b = new B();
}
public function doA():void {
_a.doA();
}
public function doB():void {
_b.doB();
}
}
...
useA(new C()); // ошибка компиляции, потому что C не является IA, который ожидает функция
useB(new C()); // ошибка компиляции по той же причине
Если же нужно и поведение сохранить, и иметь возможность использовать C там, где ожидается IA или IB, то нужно использовать и интерфейсы, и композицию.