Como encapsular uma classe

Boa noite pessoas, gostaria de saber como ficaria esta classe encapsulada ??

public class TV {

    int canal;

    int volume;

    boolean ligada;

    int tamanho;

 

    public TV(){

        this.tamanho = 42;

        this.ligada = true;

    }

 

     public static void main (String args []){

        TV minhaTV = new TV();

        minhaTV.canal = 7;

        minhaTV.volume = 22;

     }

}

Pelo pouco que sei teria q tornar os metodos privados e usar os metodos set e get ???

Olá nataliatorgano,

No encapsulamento você deve tornar suas variáveis (canal, volume, ligada, tamanho) privadas e criar métodos de acesso (get e set) públicos. Em outras palavras, suas variáveis só podem ser acessadas diretamente dentro da classe TV.

Utilizando os métodos de acesso (get e set) você garante que as regras da sua classe sejam cumpridas. Por exemplo, ao tentar mudar o canal ou volume você deveria verificar se a TV está ligada.

Olha como ficaria o código abaixo.

public class TV { 

    private int canal; 
    private int volume; 
    private boolean ligada; 
    private int tamanho; 

    public TV(){ 
        this.tamanho = 42; 
        this.ligada = true; 
    } 

    public void setCanal(int novoCanal){
        // Testar se a TV está ligada
        canal = novoCanal;
    }

    public int getCanal(){
        // Testar se a TV está ligada
        return canal;
    }

    public void setVolume(int novoVolume){
        // Testar se a TV está ligada
        volume = novoVolume;
    }

    public int getVolume(){
        // Testar se a TV está ligada
        return volume ;
    }

    public static void main (String args []){ 
        TV minhaTV = new TV(); 
        minhaTV.setCanal(7); 
        minhaTV.setVolume(22); 
    } 

} 

Oiiiiiii alcidesflach

poxa mto obrigado pela ajuda, tô tentando aprender aqui, de acordo com a sua classe eu só acertei até a
[b]public TV(){

this.tamanho = 42;

    this.ligada = true;[/b]   

NÃO TINHA CONSEGUIDO CRIAR AS CLASSES PUBLICAS…

[b]public void setCanal(int novoCanal){  

    // Testar se a TV está ligada [/b]

nataliatorgano você pode ter noção do que faz colocando uma mensagem de saída dentro da classe…

Assim:

public static void main (String args []){   
        TV minhaTV = new TV();   
        minhaTV.setCanal(7);   
        minhaTV.setVolume(22);  
        System.out.println("A televisão está ligada no canal "+minhaTV.getCanal());
        System.out.println("O volume atual da televisão é "+minhaTV.getVolume());
    }   

A msg vai ser mostrada na console