Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida na referencia

Amigos,

Estou com uma duvida sobre o significado de cada objeto e atributo. Abaixo eu tenho 2 objetos, o Funcionário e o Teste certo ? Eu acho que entendi, mas qual é a diferença logica entre os 2 objetos, ou seja, qual o significado do parâmetro "public static void main(String[] args){". O Objeto Funcionario só pode ser acessado por este programa, já o Objeto Teste é o programa principal é isso? É a classe que vai ser instanciada primeiro, ao executar o bloco de código todo ?

Outra dúvida é em relação ao "Funcionário f1 = new Funcionario();". Este é um atributo ou um método ? Porque eu preciso mencionar o Funcionário duas vezes na criação deste ?

class Funcionario{
    String nome;
    double salario;
}    

    class Teste{
    public static void main(String[] args){

        Funcionario f1 = new Funcionario();        
        f1.nome = "Danilo";
        f1.salario = 100;

Desculpe se estou postando no lugar errado. Abraços Vitor

6 respostas

Na verdade a diferença é que um método main é um método especial porque nos permite executar a nossa classe.

Normalmente, costumamos separar a classe que executa a aplicação das classes de modelo.

Veja neste caso, você tem uma classe modelo chamada Funcionário eu uma classe de que executa chamada Teste, e esta tem um método main.

solução!

Quanto ao parâmetro do método main(String[] args), como eu havia dito, esta é uma classe executável.

Então depois que seu código é compilado e é gerado um Teste.class você pode executar o seu programa passando parâmetros para ele na linha de comando

java Teste "batata"

Então por padrão o método main recebe esse array de argumentos para seu programa rodar, e se você executar essa linha que eu passei e der um println no seu código

System.out.println(args[0]);

ele irá imprimir batata

Quanto a linha

Funcionário f1 = new Funcionario();

Não é um atributo. E sim, tem um método aí, mas um método especial.

Vamos lá, primeiro lembre-se que atributo é como uma variável global da sua classe. Exemplo nome e salario da classe Funcionario. Você também pode pensar assim: Funcionario tem nome e salario

Agora quanto ao método: Funcionario() é um método mas é o método construtor da sua classe. Todas as classes em Java tem um método construtor. E quando você não cria ele (não escreve ele na sua classe) ele sempre assume o construtor padrão, que é um método assim:

Funcionario(){
}

Este é o método responsável por criar/instanciar sua classe.

Quando escrevemos

Funcionario f1;

Estamos apenas declarando uma variável do tipo Funcionario. Estamos apenas alocando um espaço de memória do tamanho de Funcionario que nosso programa irá utilizar.

e quando escrevemos

new Funcionario();

Estamos de fato criando o objeto e instanciando nossa classe Funcionario.

E no caso na linha em questão (do começo desse post) fazemos a atribuição do novo objeto à variável.

Funcionário f1 = new Funcionario();

Ficou mais claro, Vitor?

Não se preocupe, qualquer dúvida é só perguntar

Abraços!

Lucas, entendi. O parâmetro main(String[] args) é a classe executável, sem ela o programa fica sem referencia. Ja as classes que publiquei acima, de forma objetiva, servem apenas como modelo para a classe concreta (main). Blz !!!

Isso mesmo!

Valeu Lucass !! Ficou bem mais claro agora rs. Essa visão por orientação a objetos que é um pouco mais complicada. Só a pratica mesmo.