Public Class

Olá, amigos! Estou estudando Fundamentos de Java na Faculdade e, não estou conseguindo entender o que o professor está ensinando, acho que é minha própria dificuldade.
Será que podem me ajudar em algumas dúvidas:

public class Pessoa
{
private String nome;
private String cpf;
private String telefone;
public String getNome();
{return nome;}
public void setNome(String nome);
{this.nome=nome;}
}

1 - Por que “public class Pessoa”? Eu estudei Diagrama de Classes e entendi que Pessoa é uma classe, nome é um atributo e, por exemplo profissão seria uma herança. Mas, por que tudo fica público(public)?
R=?

2 - O private é um comando que que habilita a função String que é capaz de armazenar um determinado número de caracteres. Mas, seria uma palavra somente ou muitas? Está certo o conceito de private e string?

3 - O getNome() é um comando que retorna um nome, mas deve vir seguido pelo comando “return nome”. Como acontece isso? Por que o parênteses vazio depois de getNome?

4 - O “public void setNome(String nome);” serve para enviar um nome??? O “this.nome=nome” é uma referência. De que? Por que?

5 - Todos os comando somente serão executados se estiverem entre os sinais de chaves principais, com início e fim.(Acho que está OK!) No entanto, por que duas funções estão entre chaves dentro do miolo?

O professor é muito técnico e a nossa turma está com um pouco de dificuldade, não sou somente eu. Aí, já viu né, cada um tem que dar o seu jeito, porque Java está no pacote do conjunto da minha disciplina principal. No entanto estou gostando, essa linguagem parece muito boa! Inclusive estou estudando a parte conceitual, lendo várias vezes, mas percebi que falda um pouco de pedagogia nas explicações, principalmente quando se trada de explicar as funções com mais clareza.

Acredito que se entender essa estrutura entendo as outras, pois percebi que são todas semelhantes, modificando apenas os nomes referente a comandos e bibliotecas.

Primeiro de tudo, vamos corrigir e formatar seu código. Sempre poste códigos usando a tag code:

[code]public class Pessoa {
private String nome;
private String cpf;
private String telefone;
public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome=nome;
}
} [/code]

Note que não existe o ; depois de getNome() ou setNome(String nome), as chaves vem direto.

Ok, agora vamos por parte. O java tem palavras que são modificadores de acesso. São elas, public, private e protected. Elas permitem que o que vier em sua seqüência seja ou não visível.
Quando aplicada a classes, você pode ter:
a) Uma classe sem modificador de acesso: Que será visível apenas no pacote onde for declarada;
b) Uma classe publica, que será visível em qualquer pacote.

Em atributos (variáveis dentro da classe) e métodos (funções da classe), você tem:
a) private: Que só pode ser visto na própria classe onde foi criado;
b) Não escrever nada (default): Pode ser visto só no pacote onde a classe está;
c) protected: pode ser visto no pacote onde a classe está, e nos filhos;
d) public: pode ser visto por todos.

Associado ao modificador de acesso, você tem um tipo de dado (String, int, long, etc.). E em seguida, o nome do atributo, ou declaração do método.

ola, eu tambem tenhos duvidas quanto a isso tudo, mais tem uma apostila muito boa do guj, so nao estou achando o link, mais é so dar uma procurada aqui na pagian, vale a pena.

Essa apostila foi uma das melhores que li…

Poxa meus amigos muito obrigado pela ajuda inicial. A explicação está ótima! Já me esclareceu uma série de dúvidas. Vou verificar o link da apostila e baixá-la!. Outra coisa, sou usuário Linux há uns seis anos! Faço parte de um forum. Uso o Terminal para estudar e até agora está tudo funcionando bem. Tenho outro tópico por aqui que vou até postar o resultado que encontrei, pois tinha dúvida também. Vou procurar me engajar mais por aqui para aprender e quem sabe, auxiliar outros. No momento, é claro, tô na situação somente de ser auxiliado.
Assim que puder coloco por aqui mais dúvidas e experiências novas.
Mais uma vez obrigado!