[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Ep, bem que poderia ser pra quinta
- Subject: Ep, bem que poderia ser pra quinta
- From: Paulo Eduardo Azevedo Silveira <peas@linux.ime.usp.br>
- Date: Sun, 25 Apr 1999 19:38:13 -0300 (EST)
Oi professor
Estou aqui eu e meus colegas na sala linux do ime e queriamos saber se nao
dava pra dar uma empurrada no ep, pq quarta a gente tem prova de 323.
E ai?
Paulo e classe
-------------------------------------
Message from:
Paulo Eduardo Azevedo Silveira
Undergraduating in Computer Science
University of Sao Paulo - IME
http://www.linux.ime.usp.br/~peas
-------------------------------------
On Sun, 25 Apr 1999, Francisco Reverbel wrote:
> Daniel Cukier writes:
> > Porque o meu ep dá varios erros com a mensagem:
> >
> > cant make a static reference to a nonstatic (method ou variable) in
> > class...
>
> Porque metodos de classe (static) só podem referenciar campos que forem
> de classe (static) ou campos de instância (não static) de objetos
> particulares.
>
> > eu tentei solucionar esses erros colocando static em tudo quanto é
> > lugar, mas sei que isso nao é o mais correto.
>
> Não faça isso! O static significa que o método ou o campo não é de um
> objeto particular, mas da classe toda. Um campos que forem de um objeto
> particular -- o fileName de um DBFile, por exemplo -- não pode ter
> static. Senão você vai guardar um fileName só para todos os DBFiles, o
> que está completamente errado!
>
> > Qual seria a solucao então?
> >
> > Um exemplo real:
> > o método create da classe DBFile é static
> >
> > dentro desse método, eu desejo inserir a linha
> >
> > DBFile.fileName = fileName;
> > DBFile.numberOfBlock = nBlks;
> > .
> > .
> > .
> > isso está certo??
>
> Não está. Tente algo como
>
> DBFile dbf = new DBFile();
> dbf.fileName = fileName;
> dbf.numberOfBlock = nBlks;
>
> Note que agora o método de classe não está referenciando DBFile.fileName
> (que não faz sentido, pois não existe um fileName para a classe toda) e
> sim o dbf.fileName (o campo fileName de um particular objeto).
>
> Mudando um pouco de assunto: Em vez de chamar um construtor e logo em
> seguida inicializar campos do objeto recém construido, é melhor colocar
> a inicialização desses campos dentro do construtor. Em vez das tres
> linhas acima, você teria uma linha só:
>
> DBFile dbf = new DBFile(fileName, nBlks);
>
> Reverbel
>