Bom… vamos lá, acredito que seja isso, se estiver errado, por favor, me corrijam:
O compilador irá executar o cast da direita para a esquerda, ou seja, primeiro ele fará o casta para Alpha e depois para Beta.
O inverso não é permitido por que Alpha é mais genérico que Beta, um Beta É-UM Alpha porém um Alpha não é um Beta. Seria a mesma coisa que dizer:
Não compila. Um Alpha não cabe em um Beta. Porém um Beta cabe em um Alpha.
[quote=andeb]Bom… vamos lá, acredito que seja isso, se estiver errado, por favor, me corrijam:
O compilador irá executar o cast da direita para a esquerda, ou seja, primeiro ele fará o casta para Alpha e depois para Beta.
O inverso não é permitido por que Alpha é mais genérico que Beta, um Beta É-UM Alpha porém um Alpha não é um Beta. Seria a mesma coisa que dizer:
Não compila. Um Alpha não cabe em um Beta. Porém um Beta cabe em um Alpha.
Bom não sei se to certo mas vamos tentar =P Qualquer coisa me corrijam =D
Pelo que vejo a Classe Alpha é a classe mãe de Beta, sendo assim Beta é um aprimoramento da classe Alpha pois pode vir a ter mais metodos, atributos, etc…
O modelo da Classe Alpha (mãe) sendo assim é possivel o cast de uma classe filha
Beta x = new Beta();
Alpha a = (Alpha)x;
No entanto a Classe filha não pode receber um cast com um objeto de mãe, pois a classe mãe pode não conter todos os metodos da classe filha
Errado
Beta x = new Beta();
Beta b = (Alpha)x;
Bom espero ter ajudado =P
[editado] foi mal acabei postando ser ver que já havim respondido :oops: