Olá a todos os colegas,

Ricardo, me permita corrigí-lo em um aspecto. Mesmo que a classe Object fosse abstrata, seria possível ao método que você
citou funcionar desta forma, pois todas as classes implicitamente são herdeiras (estendem) a classe Object, para exemplificar, de uma olhada no seguinte código:

public class SubObject {

    public Object getObjeto() {
        SubObject sb = new SubObject();
        Object obj = (Object)sb;
        return obj;
    }
}

Como podemos ver, na segunda linha do método, é feito um cast do objeto do tipo SubObjeto para um objeto do tipo Object  (na verdade, o código de casting "(Object)" é opcional, coloquei ele apenas para tornar o código mais claro). Desta forma, seria possível retornar objetos Object mesmo que a classe fosse abstrata, pois cria-se instâncias de classes que herdam de Object e faz-se o casting para Object. Na verdade, nunca cheguei a uma situação em que fosse necessário um código como:

Object obj = new Object();

Se ainda estiver com dúvidas, busque material sobre o funcionamente de Casting e da palavra chave abstract no Java. Busque também ler alguns materiais sobre herança em  POO pois é importante ter estes conceitos para compreender melhor o funcionamento de casting e classes abstratas em java.

Quanto aos motivos da classe Object não ser abstrata, acredito que os demais colegas já tenham explicado em outras mensagens.

De qualquer forma, espero ter ajudado.

[]s

Carlos H.

Ricardo Grego wrote:
Paulo,

 Estou começando a estudar Java então não tenho muita
certeza do que vou te falar. Mas sou tão iniciante que
como estou aprendendo a usar Vectors agora, acho que
me deparei com a resposta da sua pergunta.

 Quando se usa o método 'get' para recuperar objetos
do vector, ele retorna um objeto da classe Object, e é
necessário fazer o cast dele para a classe correta.
Acho que se Object fosse abstrata o Vector não poderia
funcinar da forma que está.

 Por favor me corrijam se eu falei elguma besteira.

[]'s
Ricardo Grego

 --- Paulo Silveira <[EMAIL PROTECTED]>
escreveu: > Oi pessoal!
  
Uma vez alguem me perguntou, e eu não soube dar um
motivo 100%:

"Porque a java.lang.Object não é abstract"?

Ela poderia perfeitamente ser abstract, já que não é
preciso ter métodos abstratos para a classe ser
abstrata.

Você poderia ainda se referenciar a Objects, criar
array de Objects e tudo mais.

A única coisa que você não poderia fazer, seria
instanciar Objects. A única utilidade de instanciar
Objects, a meu 
ver, é utilizar como objetos de tag, ou como mutex
(declara uns Objects estáticos e da syncrhinized
neles!). Mas 
pra isso basta você criar uma inner classe bem
inutil, só pros mutexes e coisas do gênero.

Existe alguma coisa que faria o java.lang.Object
precisar ser concreta? Ou foi apenas uma decisão de 
implementação?

======================
Paulo Eduardo Azevedo Silveira
Grupo de Usuários Java
http://www.guj.com.br/
    

_______________________________________________________________________
Yahoo! GeoCities
Tudo para criar o seu site: ferramentas fáceis de usar, espaço de sobra e acessórios.
http://br.geocities.yahoo.com/

------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

  

-- 
/**
 * [Carlos H.] - [EMAIL PROTECTED]
 * Núcleo de Informática UNERJ - Centro Universitário de Jaraguá do Sul
 * 
 * "O Sábio fala pouco do que muito sabe
 *	O Tolo fala muito do que pouco sabe..."
 */

Responder a