Erro no encapsulamento

Galera…
Estou tentando utilizar encapsulamento neste codigo. Mas na execução, o código apresenta erro no console.
Alguem poderia me dizer o que há de errado com meu codigo e qual o melhor momento para usar esse tipo de encapsulamento?
Aí está a bendito:

package Prova;


public class Veiculos{

    String placa;
    String marca;
    Categoria categoria;


    public Veiculos() {// Metodo construtor sem parâmetros
    }

    public String getPlaca (){
    return placa;
    }

    public void setPlaca (String placa){
    this.placa = placa;
    }

    public String getMarca(){
    return marca;
    }

    public void setMarca(String marca){
    this.marca = marca;
    }

    public Categoria getCategoria (){
    return categoria;
    }

    public void setCategoria (Categoria categoria){
    this.categoria = categoria;
    }

}



package Prova;



public class Categoria extends Veiculos{

    public String nomeCategoria;
    public double diaria;
    public int tempoLocacao;


    public Categoria(){ //Metodo construtor sem parametros
    }


    public String getNomeCategoria(){
    return nomeCategoria;
    }

    public void setNomeCategoria(String nomeCategoria){
    this.nomeCategoria = nomeCategoria;
    }

    public double getDiaria(){
    return diaria;
    }

    public void setDiaria(double diaria){
    this.diaria = diaria;
    }

    public int getTempoLocacao(){
    return tempoLocacao;
    }

    public void setTempoLocacao(int tempoLocacao){
    this.tempoLocacao = tempoLocacao;
    }

}




package Prova;



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

    Veiculos v1 = new Veiculos();

    v1.setPlaca ("jkl 9564");
    v1.setMarca ("Toyota");
    v1.categoria.setNomeCategoria ("ASW Hillux");
    v1.categoria.setDiaria(90.0);
    v1.categoria.setTempoLocacao(20);

    system.out.println("Placa: "+v1.getPlaca());
    system.out.println("Marca: "+v1.getMarca());
    system.out.println("Nome da Categoria: "+v1.categoria.getNomeCategoria());
    system.out.println("Diaria: "+v1.categoria.getDiaria());
    system.out.println("Tempo de Locação: "+v1.categoria.getTempoLocacao());
   
    }
}


    
  1. esqueceu dos atributos privados… e tem alguns ate publicos!!
  2. verifique o erro e vá até a linha.
  3. tente.

jopss :stuck_out_tongue:

Cara, encapsulamento é você fazer o data hiding, só que você deixou alguns atributos como public, ou seja, você não tá escondendo os atributos.
Então, troque os atributos de public para private e deixa os métodos acessadores e modificadores public.
Outra coisa que vi, seus ‘system.out.println’. System é uma classe Java. Isso quer dizer que você tá acessando a classe, então ela deve ser com letras maiúsculas (todas as classes devem começar com letras maiúsculas, isso por convenção).
Eu sempre tento deixar cada macaco no seu galho, então deixe cada classe em 1 fonte único.
E só mais uma coisa: você sobrescreveu o construtor. Isso não é errado, mas se o construtor não faz nada, você não precisa implementar um, porque o Java já faz isso pra você (só que você não ve).

Abraço.