Dificuldade básica com Classes (apostila da CAELUM)

8 respostas
M

Ae pessoal beleza? Sou novo em Java e esse é o meu 1º post que eu deixo no fórum.

A minha duvidade parece ser simples, mas estou a 3 dias tentanto e resolvi pedir ajuda de voces.

Estou seguido a apostila da Caelum, que manda modelar um funcionario de banco.

Tenho uma classe Funcionario com seus atributos: salario, nome, rg, etc...

Mas tambem tenho uma Classe DATA, que tem Dia, Mes e Ano, essa Classe DATA, deve ser usada pelo Funcionario.

Não estou conseguindo fazer o Funcionario usar essa classe.

Veja meu script abaixo:

class Funcionario
{
	String nome;
	String departamento;
	Double salario;
	String rg;
	Boolean presenca=false;
	
	[b]Data dataDaEntrada;[/b]
	
	[b]
	class Data
{
	int Dia=27;
	int Mes=07;
	int Ano=1982;
	
	
}[/b]
	
	void bonificacao(Double valor)
	{
		salario=salario+valor;
		
		
	}
	
	
	
	
}



class TestaFuncionario
{
	public static void main(String[] args)
	{
		Funcionario f1=new Funcionario();
		
		
		Data data=new Data();
		
		f1.dataDaEntrada=data;
		
		
			
			
	
	}
	
	
	
	
	

}

Não sei se consegui me expressar direito!!!!

O copilador indica o seguinte erro na linha 42: Cannot symbol Class Data.

Algume pode me ajudar?

8 Respostas

peczenyj

Declare fora da classe.

class Data { ... }
class Functionario{
   ...
   Data x;
   ...
}

Explicação: declarar uma classe dentro de outra é criar uma classe 'interna' e vc precisa declara-la de forma diferente

Ex:
package br.sobreescrita;

class B{
            /* percebeu o B.A ? */
	B.A x = new B.A();
	class A {		
	}
	public void doIt(){ System.out.println(x.toString());}
}
public class Exemplo{
	public static void main(String [] xxx){
		B b = new B();
		b.doIt();
	}
}
tiagoemerick

é como o peczenyj disse…

Dentro de classes vc declara métodos.

É até uma pergunta interessante e gostaria de saber tb, caso alguem saiba responder…
só aproveitando o topico do nosso amigo…

é possivel declarar classe dentro de classe?
e metodo dentro de metodo?

joab

E ai parceiro, blza?
Eu sou novato na área tb, mas acho que posso ajudar…
To começando agora a estudar JAVA.
Olha só vc declarou a classe Data dentro da classe Funcionario…
Basta que vc corrija o código declarando a classe Data fora da classe Funcionario e dá certo!!

peczenyj

Acabei de mostrar que é possivel criar classe dentro de classe (inner class).

Mas método dentro de metodo não, mas dentro de um método da pra fazer muita coisa :)

ex:
package br.innerclass;

class B{
	interface I{ 
		int dez();
	}
	public void doIt(){ 
		B.I i = new B.I(){ public int dez(){ return 10; } };
		System.out.println(i.dez());
	}
}
public class Exemplo{
	public static void main(String [] xxx){
		B b = new B();
		b.doIt();
	}
}
M

Pow. Valeu pela resposta. Ta funcionando agora.

Foi falta de atençao mesmo.

Abraços.

Andre_Brito

Um argumento também pode ser um método?

public void metodo1( public int metodo2 {
         return 20;
   }, int b) {
   bla bla bla; 
}

?

M

Ae pessoal beleza.

Consegui fazer graças a ajuda de voces…

sergiolopes

dedejava,
nao eh possivel fazer isso em java.
(estao tentando fazer algo parecido pro java7, com funcoes lambda)

marchese3d,
que bom que conseguiu fazer o exercicio! só uma dica, embora realmente exista essa coisa toda de inner classes, nao se preocupe com isso agora… nao eh a hora de vc aprender isso :slight_smile:

Criado 8 de janeiro de 2008
Ultima resposta 9 de jan. de 2008
Respostas 8
Participantes 6