Criei uma classe com todos os métodos disponíveis para o projeto.
public class Veiculo {
//
}
Então vem uma segunda classe:
public class Carro extends Veiculo {
}
Então dentro da classe Carro quero criar outras classes tipo Carro1, Carro2, etc…
public class Carro {
class Carro1 extends Veiculo {
// bla bla bla
}
class Carro2 extends Veiculo {
// bla
}
}
Mas as variáveis criadas dentro dessas “inner class” Carro1, Carro2, etc, não são vistas fora de suas classes mesmo quando as declaro como public. A intenção é fazer com que a classe Carro tome as decisões, baseadas nos valores, variáveis e métodos dentro das “inner class”, mas como já disse, não as consigo fazer ficarem “visíveis” fora da classe principal…
O cara usa uma inner class, quando quer enviar um objeto para algum método implicitamente.
por exemplo, usa-se inner class, para tratar eventos e esse tipo de coisa, pq tem um método que está esperando um objeto específico.
Quanto tu cria uma inner class como tu tá fazendo, tu nao instancia objeto algum, ou seja, tua classe tá lá, mas como tu vai acessar ela, sem declarar um tipo, ou qualquer outra coisa?
Tu poderia declarar alguma das propriedades da tua inner class, com static, jah tentou? Nao sei se dá, mas é uma possibilidade.
public class Teste1 {
public String nome = "Teste1";
class Teste2 {
public String nome = "Teste2";
}
}
public class Teste {
public static void main(String[] args) {
Teste1 teste1 = new Teste1();
System.out.println(teste1.nome);
Teste1.Teste2 teste2 = new Teste1().new Teste2();
System.out.println(teste2.nome);
}
}
Saida:
Teste1
Teste2
Observacoes:
1 - A inner class foi declarada como “default”. Talvez seja esse teu problema. No exemplo tudo esta dentro de um mesmo pacote. Se estiverem em pacotes diferentes a inner class tera que ser publica para funcionar.
2 - Se a inner class fosse uma “static inner class” a sintaxe bizarra de instanciacao dela ficaria mais bonitinha:
Teste1.Teste2 teste2 = new Teste1.Teste2();
Enfim, acho que da pra fazer o que voce quer. Mas sera que eh preciso mesmo? De repente eh um problema conceitual, que voce poderia resolver de outra forma mais natural (com polimorfismo, p.ex.).