Dificuldades na lógica

8 respostas
duduindo

…Eu estou lendo, lendo, lendo apostilas sobre Java e nada.

Mas estou dificuldade na lógica do [color=darkred]private[/color], [color=darkred]public[/color], [color=darkred]class[/color].

Tipo assim…

Um exemplo simples:

class ola2{	
        String nome = "Fulano";
	public static void main(String[] args){
		System.out.println(nome);
	}
}

Por que que eu não posso imprimir a a variável [color=green]nome[/color] si ela está na mesma class ?

Isso tá fritando meu cerébro(meses)… :cry:

Entenderão na minha explicação ?

8 Respostas

sergiotaborda

duduindo:
…Eu estou lendo, lendo, lendo apostilas sobre Java e nada.

Mas estou dificuldade na lógica do [color=darkred]private[/color], [color=darkred]public[/color], [color=darkred]class[/color].

Tipo assim…

Um exemplo simples:

class ola2{	
        String nome = "Fulano";
	public static void main(String[] args){
		System.out.println(nome);
	}
}

Por que que eu não posso imprimir a a variável [color=green]nome[/color] si ela está na mesma class ?

A variável nome está declarada no escopo do objecto. Sim, ele está escrito dentro de “class” mas ele pertence ao escop do objeto.
Apenas o objeto , e não a classe, pode acessar essa variável.

O método está no escopo da classe. Sabemos isto porque está marcado com “static”. O método pertence À classe e portanto pode acessar a coisas do escopo da classe.

Tudo o que é estático só pode acessar outras coisas estáticas na mesma classe
Tudo o que não é estático , pode acessar tudo o que é estático + tudo o que não é estático.

A palavra “static” significa “não dinamico”. Isto pode parecer idiota, mas é que um objeto só existe em tempo de execução , quando o programa corre ( dinamico).
Mas a classe existe mesmo quando o programa não está correndo ( existe em arquivo, por exemplo). Portanto , coisas que são estáticas não podem acessar coisas dinamicas pelas simples razão que elas podem não existir ainda. Mas os objetos, criados em tempo de execução, sempre podem acessar o que é estático, porque o que é estático, está sempre lá.

duduindo
A variável nome está declarada no escopo do objecto. Sim, ele está escrito dentro de "class" mas ele pertence ao escop do objeto. Apenas o objeto , e não a classe, pode acessar essa variável.

O método está no escopo da classe. Sabemos isto porque está marcado com "static". O método pertence À classe e portanto pode acessar a coisas do escopo da classe.

Tudo o que é estático só pode acessar outras coisas estáticas na mesma classe
Tudo o que não é estático , pode acessar tudo o que é estático + tudo o que não é estático.

A palavra "static" significa "não dinamico". Isto pode parecer idiota, mas é que um objeto só existe em tempo de execução , quando o programa corre ( dinamico).
Mas a classe existe mesmo quando o programa não está correndo ( existe em arquivo, por exemplo). Portanto , coisas que são estáticas não podem acessar coisas dinamicas pelas simples razão que elas podem não existir ainda. Mas os objetos, criados em tempo de execução, sempre podem acessar o que é estático, porque o que é estático, está sempre lá.

Tá, o Static eu já entendi,(Valeu :lol: )

Mas tenho outras dúvidas....
public class ola{ 

public class um{ 
String nome; 
} 

public class dois{ 
um a = new um(); 
a.nome = "Fulano"; 
} 
}

Nesse código, o [color=purple]public[/color] serve pra as outras class's acessar as funções dela ?

evertonsilvagomesjav
nesse caso
1. public class ola{   
   2.   
   3. public class um{   
   4. String nome;   
   5. }   
   6.   
   7. public class dois{   
   8. um a = new um();   
   9. a.nome = "Fulano";   
  10. }   
  11. }

na classe dois vc atribuiu um objeto do tipo um() á variavel de referencia "a" que e do tipo "um", e como na classe "um"
vc tem um atributo com o modificador de acesso "default", antes que vc pergunte rsrs "default" e quando vc nao declara explicitamente um modificador, entao esse modificador padrao da acesso somente a quem estiver no mesmo pacote.

WendersonLP

Olha essa parte do seu código onde contém três classes publics está errado, porque em um arquivo java somente pode ter uma classe public e não três da maneira que você está fazendo.

evertonsilvagomesjav

isso ai ele deve ter copiado e colado, nao deve ta em uma classe so nao

duduindo

Eu entendi mais ou menos…

Obrigado pela ajuda:
sergiotaborda
evertonsilvagomesjava
WendersonLP

:smiley:

Eu ainda estou cheio de dúvidas. Amanhã eol pergunto, tenho que dormir(trabalhar amanhã :frowning: ).

Obrigado mesmo hein pessoal…

duduindo

Vamos um por um.

Tipo:

Si eu declarar uma [color=blue]Class[/color] como [color=purple]public[/color] todas funções dessa [color=blue]class[/color] serão públicas ?

duduindo

Pessoal, esquece.

Eu estou lendo as apostilas do site T2ti:
http://www.t2ti.com/curso/video/java/basico/java_starter.php

E já tô pegando as manhãs… Falow e Obrigado a todos :wink:

Criado 27 de novembro de 2009
Ultima resposta 28 de nov. de 2009
Respostas 8
Participantes 4