Pessoal, preciso da ajuda de vcs. Não faço idéia do erro que pode estar acotecendo, só sei que não compila de jeito nenhum.
O que quero fazer é atribuir a variável novavenda para a classe Venda. Abaixo vai o código e o erro que aparece ao tentar compilar o código.
public class mundo
{
public static void main(String[] args)
{
class Casa {
String cor;
Venda novavenda;
}
class Venda {
int ab;
}
Casa a1 = new Casa();
a1.cor = "azul";
Venda venda = new Venda();
venda.ab = 1;
a1.novavenda = venda;
System.out.println(a1.novavenda.ab);
}
}
Erro ao compilar:
user@user-desktop:~/Área de Trabalho$ javac mundo.java
mundo.java:8: cannot find symbol
symbol : class Venda
location: class Casa
Venda novavenda;
^
1 error
cara, não está compilando por um motivo simples, você está declarando a classe Casa e a classe Venda dentro de um método, que é o main. E isso não pode ser feito.
apenas reorganizei seu código, de uma olhada…
public class Mundo{
public static void main(String[] args) {
Casa a1 = new Casa();
a1.cor = "azul";
Venda venda = new Venda();
venda.ab = 1;
a1.novavenda = venda;
System.out.println(a1.novavenda.ab);
}
}
class Casa {
String cor;
Venda novavenda;
}
class Venda {
int ab;
}
tenha um pouquinho mais de atenção com as chaves “{}” que delimitam um método ou uma classe
Altere a ordem de declaração da classe Casa e Venda… pois quando vc cria a Casa… a classe Venda tem que existir
[code] public static void main(String[] args) {
class Venda { <<<<< PRIMEIRO DECLARE A CLASSE VENDA
int ab;
}
class Casa {
String cor;
Venda novavenda;
}
Casa a1 = new Casa(); <<<<< DEPOIS DECLARE A CLASSE CASA
a1.cor = "azul";
Venda venda = new Venda();
venda.ab = 1;
a1.novavenda = venda;
System.out.println(a1.novavenda.ab);
} [/code]
Isto vai resolver o seu problema, porém o seu código precisa ser melhorado e muitoooooo…
Dicas
Utilize o padrão definido pela Sun no seu código (nomenclatura de classes Mundo e não mundo, etc)
Separe em arquivos diferentes as classes
Crie metodos get’s e set’s (encapsulamento, etc)
Tome cuidado com classes internas a métodos !!!
Entre outras coisas…
ele pode criar classes dentro de classes SIM…e classes dentro de metodos TAMBÉM… (não q isso seja uma coisa boa…)
pagina 366 do livro da kathy, classes internas de metodo…
o seu problema é com o escopo ao que me parece… dentro da classe interna do metodo, ele tem acesso ao objeto padrão dela (tipo o this dela) e o objeto da classe externa…tipo o this da classe externa… o problema é que a classe venda não esta como objeto da instancia da classe externa mais sim de dentro do método… e ai não encontra…
agora…quanto a ser uma boa pratica eu concordo com o elton_csantana
editando… o astork tem razão…o problema é esse mesmo… e não o escopo como eu tinha imaginado…
bã Astork, fiz o que vc disse e deu certinho. Valeu, não tinha me dado conta da ordem das classes. (bem que o Eclipse podia arruma isso também )
Em relação as dicas: eu sigo os padrões, o problema é que eu estou trabalhando num código grande. Como seria difícil explicar aquele outro, resolví fazer um rapidinho aqui no gdit e nem cuidei esses detalhes.
Agora, em relação a dividir em arquivos diferentes: Isso eu ainda não aprendi