O que você quer fazer não é overriding, e sim SHADOWING.

Até onde eu saiba, apenas C++ e DotNet te deixam fazer isso (public
new string funcao() ou Public Shadows Function funcao() As String)

Variáveis públicas (fields) nunca podem ser sobreescritos, mas podem
ser ocultados (shadows).

De qualquer forma, propriedades podem ser sobreescritos, desde que
sigam as seguintes regras:

1) A propriedade da classe base (super) deve ser marcada como Virtual.
2) Não se pode mudar o tipo de retorno no Override.


Lembrando que OOP pura não suporta shadowing (que se dane, aliás, não
suportaria nem propriedades também, he he he).


2010/2/5 Fredy Gadotti <thief...@gmail.com>:
> Olá, você não pode diretamente sobreescrever a propriedade em si.
> Só pode sobreescrever o getter e/ou setter, e acredito que o tipo dela não
> possa mudar, mas dá para fazer alguma coisa do genêro.
> Na classe pai declare:
> private var _endereco: EnderecoVO;
> e declare o setter:
> public function set endereco(value:EnderecoVO):void {
>     _endereco = value;
> }
> ai na classe que herda, e você quer sobreescrever, você não pode alterar o
> tipo, mas pode alterar a implementação.
> Ai poderia crair um Array para manter os endereços, e quando chamasse o
> setter ele desse um push no seu Array.
> private var _enderecos:Array;
> override public function set endereco(value:EnderecoVO):void {
>      _enderecos.push(value);
> }
> Ai seu getter não seria sobreescrito, pois a assinatura dele, seria obrigado
> a mudar, para retornar o Array.
> Algo como:
> public function getEnderecos():Array {
>     return _enderecos;
> }
>
>
> Espero que tenha sanado sua dúvida.
>
>
> Att,
>
> Fredy.
> 2010/2/5 Giolvani <inavloigru...@gmail.com>
>>
>> Seguinte pessoal,
>>
>> To tentando fazer um override de um atributo no Flex mas nao ta tendo
>> jeito, a situação é a seguinte:
>>
>> Tenho os objetos: *ClienteVO* e *FuncionarioVO*, ambos herdam de
>> *PessoaVO*.
>> Em *PessoaVO* tenho um atributo endereco que é do tipo *EnderecoVO*
>> ("public var endereco: EnderecoVO;")
>>
>> Nesse caso, como é herança, *ClienteVO* e *FuncionarioVO*, tmb tem um
>> atributo endereco do tipo *EnderecoVO*.
>>
>> No *FuncionarioVO* eu tenho apenas um endereco, mas no *ClienteVO* eu
>> posso ter vários enderecos, por isso preciso que em *ClienteVO*,
>> o atributo endereco passe a ser do tipo Array.
>>
>> Ai to tentando fazer
>>
>> "override public var endereco: Array"
>>
>> mas nao tem jeito...
>>
>> alguém sabe como resolver essa questão?!!!
>>
>> abraços e muito obrigado
>> Giolvani de Matos
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
>> Para sair da lista, envie um email em branco para
>> flexdev-unsubscr...@googlegroups.com
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev



-- 
[]
Júlio César Ködel G.
"Você pode ficar sem comer durante 3 dias, sem beber durante 2 dias,
mas não pode ficar sem respirar por mais de 5 minutos.
Então, antes de imprimir isso, lembre-se que o oxigênio deste planeta
vem da árvore morta para fazer o papel que irá utilizar."

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a