Oi pessoal gosto desse thread :)
não podemos aceitar nenhum desses dois argumentos: 1-) > Declarar uma classe abstract apenas para impedir que seja instanciada eh um > exemplo de design ruim. A java.awt.Component eh o exemplo mais classico disto. Ela nao possui metodos abstratos, e ela eh abstrata! E ela eh como se fosse um "pai de todos" objetos graficos, acima soh a Object. O design da java.awt (composite pattern, observable, etc) eh super elogiado... 2-) > O motivo fundamental para que uma classe seja declarada abstract eh porque ela > eh incompleta, ou seja, o desenvolvedor nao sabe, no momento da implementacao, > todos os requisitos necessaries Mesma coisa anterior, o java.awt.Component contraria esse seu exemplo. E a java.lang.Object,. você tambem nao sabe os requisitos necessarios, porque instancia-lo? O Daniel Destro, em outra mensagem, disse: > acho q seria meio incoerente uma classe abstract nao ter metodos abstratos... qual a >funcionalidade disso? A java.awt.Component, e muitas outras sao. E nao sao incoerentes. A funcionalidade eh nao deixar instancia-los, ja que voce sabe que ele nao tem funcionalidade suficiente sem ser subclasseado. E se fosse incoerente, a java language specification nao deixaria uma classe ser abstrata sem ter um metodo abstrato. ====================== Paulo Eduardo Azevedo Silveira Grupo de Usuários Java http://www.guj.com.br/ On Sat, 05 Oct 2002 11:23:30 -0700 (PDT), "Silvio L. DeMorais" <[EMAIL PROTECTED]> escreveu : > De: "Silvio L. DeMorais" <[EMAIL PROTECTED]> > Data: Sat, 05 Oct 2002 11:23:30 -0700 (PDT) > Para: [EMAIL PROTECTED] > Assunto: Re: [java-list] java.lang.Object, porque não abstract? > > Eu gostei dessa pergunta. > A principio, nao consegui achar nenhuma resposta satisfatoria, parece nao > existir nenhum motivo especial pelo qual Object nao poderia ser abstract. > Fiz ateh uma pesquisa no codigo fonte do Java (J2SE 1.4.1), e Objects sao > instanciados em apenas 48 dos 3889 arquivos. E em muitos desses casos, seria > muito facil usar algum outro artificio para chegar ao mesmo resultado (ou seja, > o desenvolvedor instanciou Object simplesmente porque podia, se nao fosse > possivel, haveriam varias outras opcoes). > > Ai passei a pensar no que significa declarar uma classe abstract, e porque essa > decisao eh tomada. E acho que encontrei o motivo. > > O motivo fundamental para que uma classe seja declarada abstract eh porque ela > eh incompleta, ou seja, o desenvolvedor nao sabe, no momento da implementacao, > todos os requisitos necessaries, e eh forcado a declarar abstract para que outro > desenvolvedor, com mais informacoes, complete a classe. Bom, Object certamente > nao eh uma classe incompleta, uma instancia de Object responde coerentemente a > todas as mensagens (methods), logo, nao faz sentido declarar Object abstract. > Declarar uma classe abstract apenas para impedir que seja instanciada eh um > exemplo de design ruim. > > > ----------- > > From: "Paulo Silveira" <[EMAIL PROTECTED]> > Reply-To: [EMAIL PROTECTED] > To: [EMAIL PROTECTED] > Subject: [java-list] java.lang.Object, porque não abstract? > Date: Wed, 2 Oct 2002 17:34:21 -0300 > > 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 > > ------------------------------ 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] > ------------------------------------------------------------------------- > > > > ------------------------------ 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] -------------------------------------------------------------------------