Как говорит RIAstar в своих комментариях, самым очевидным способом было бы заставить Example
также иметь функцию func
и переопределить ее в подклассах.
Реализация интерфейса вместо расширениябазовый класс, или выполнение того и другого, может быть другим способом, позволяющим functionThatReceivesAnExtendedExample
вызывать func
для ex
, не заботясь о том, каким именно классом является объект ex
, и без класса Example
, в котором необходимо реализовать func
функция, как в вашем примере.Так что-то вроде этого, опираясь на ваш пример кода:
public class Example {
public function Example () {
}
}
public interface IFunc {
function func():void;
}
public class ExtendedExample extends Example implements IFunc {
public function func ():void {
//here is what this class does different that the next
}
}
public class AnotherExtendedExample extends Example implements IFunc {
public function func ():void {
//here is what this class does, and it is differente from ExtendedExample
}
}
function functionThatReceivesAnExtendedExample (ex:IFunc):void {
ex.func()
}