Bom dia, me deparo com esse pequena falta de conhecimento em chamar uma class dentro de outra, meu code logo a baixo.
public class Animal
{
public String nome;
public double peso;
public double tamanho;
public class Categoria{
public boolean terrestre;
public boolean aquatico;
}
}
public class Console
{
public static void main(String [] args){
Animal a = new Animal();
Categoria c = new Categoria();
a.nome = "Tigre";
a.peso = 90.5;
a.tamanho = 2.3;
}
}
Vamos primeiro aqui de conhecimento. Não é correto ter duas classes no mesmo arquivo, salvo necessidade. Por que você não começa criando classes separadas?
Você disse que precisa
Isso “não existe” (bem entre aspas, mas tente imaginar isso. Dê uma olhada depois no que é o static). Você cria um objeto daquela classe e acessa ele, e você faz isso aqui em:
Esses conceitos tem outros nomes, você vai entender o que é um objeto e o que é uma referência e etc, mas só pela didática tô usando os termos mais generalistas
Você pode usar o get/set em variáveis/atributos com QUALQUER tipo de modificador de acesso. Mas você concorda que, se você tem métodos para ler e alterar uma variável/atributo, não faz sentido deixar ele em qualquer visibilidade que não seja privada? Você não vai precisar mexer diretamente no atributo, tem quem faça por você (os métodos get and set).
public class Animal
{
public String nome;
public double peso;
public double tamanho;
Categoria cat ;
public class Categoria{
public String terrestre;
public String aquatico;
}
}
Isso aí é pq vc chama a classe Categoria dentro da classe Animal mas não tá criando o objeto dela. O que você tá tendo é uma Exception, uma das mais famosas no Java, chamada NullPointerException. Null Pointer Exception é traduzida como Exceção de Ponteiro Nulo, ou seja, você está tentando pegar algum atributo ou algum método de um objeto que é nulo. Sendo nulo, ele não existe, e não existindo, não dá pra usar. Você precisa criar o objeto pra usar.
Criar/instânciar um objeto significa dar um NEW nele. Ou seja, só precisa mudar a linha Categoria cat
para Categoria cat = new Categoria();
e você terá o resultado que quer. Mas recomendo que tire sua classe Categoria de dentro da Animal. Faça em outro arquivo e estude Orientação à Objetos!