Bom pessoal,

Obrigado pela ajuda de vcs, mas resolvi aqui forma diferente.

Acabei tirando o atributo endereco:EnderecoVO de PessoaVO...

Agora quem herdar de PessoaVO, não tem mais o atributo endereco e pode definir ele da maneira que achar melhor...

E foi o que fiz, agora FuncionarioVO tem o atributo endereco:EnderecoVO e Cliente tem o atributo endereco:Array

Essa foi a forma que achei pra resolver, mas acredito não ser a mais sensata, se alguém tiver mais alguma opinião, diz ae...

abraços a todos

Júlio César Ködel escreveu:
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 <[email protected]>:
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 <[email protected]>
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 [email protected]
Para sair da lista, envie um email em branco para
[email protected]
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 [email protected]
Para sair da lista, envie um email em branco para
[email protected]
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 [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a