Apesar do nome relativamente esquisito o conceito e simples. Encapsulamento refere-se ao isolamento entre as partes do programa. Uma das principais formas de fazer isso e proibindo o acesso direto as variaveis de um objeto por objetos externos.Para isso, utilizamos os modificadores de acesso existentes em java. Estes modificadores funcionam da seguinte forma:public: Qualquer objeto pode acessar o membro;default: Qualquer objeto do mesmo pacote pode acessar o membro e subclasses de outros pacotes;protected: O membro e acessivel apenas por objetos do mesmo pacote;private: O membro e acessivel apenas internamente (proprio objeto);Exemplo:class Conta { private double salario; private String nome; }Um atributo privado so pode ser acessado ou alterado por codigo escrito dentro da classe na qual ele foi definido. Para acessa-los em outras partes do programa, utilizamos os metodos getters e setters.Getters: Metodo que retorna o atributo.Setters: Metodo que atribui/modifica o valor de um atributo.Exemplo:/* classe que demonstra o uso do get e set, como os atributos sao do tipo * private, somente poderao ser acessados fora desta classe com o uso destes * metodos.*/class Conta { private double salario; private String nome; // Declarando os metodos Get e Set do atributo salario public double getSalario() { return salario; } public void setSalario(double salario) { this.salario = salario; } // Declarando os metodos Get e Set do atributo nome public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; }}A seguir, a classe AcessaConta mostra como e feito o acesso aos atributos do tipo private.class AcessaConta { public static void main(String[] args) { Conta c = new Conta(); // Chama o metodo set dos atributos nome e salario e altera os seus valores c.setNome("Oberdan Martins"); c.setSalario(100); // Chama o metodo get dos atributos nome e salario e retorna os seus valores System.out.println(c.getNome()); System.out.println(c.getSalario()); }}Normalmente, os metodos sao public (publicos) e os atributos private (privados), isto ocorre pois nos desejamos que os atributos de um objeto so possam ser alterados por ele mesmo, desta forma nos inviabilizamos situacoes imprevistas. Heranca e uma forma de reutilizacao de softwares em que uma nova classe e criada absorvendo membros de uma classe exixtentes e aprimorada com capacidades novas ou modificadas. Com a Heranca, voce pode economizar tempo durante o desenvolvimento de um programa baseando novas classes no software existente.Ao herdar membros de uma classe exixtente, a classe que herdou e chamada de subclasse, e a que existia anteriormente chamada de superclasse.Para ficar mais claros vamos partir para um exemplo: Imagine que estivessemos implementando um programa que fosse utilizado em um concessionaria de veiculos. Esta concessionaria vende carros de passeio, jipes e veiculos utilitarios. Para implementar as classes destes veiculos poderiamos criar tres classes distintas,A seguir a classe Jipe:public class Jipe { private String marca; private Double capacidadeTanqueCombustivel; // Metodos Get e Set do atributo capacidadeTanqueCombustivel public Double getTanqueCombustivel() { return capacidadeTanqueCombustivel; } public void setTanqueCombustivel(Double capacidadeTanqueCombustivel) { this.capacidadeTanqueCombustivel = capacidadeTanqueCombustivel; } // Metodos Get e Set do atributo marca public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; } // Metodo para representar a tracao