Encapsulamento em Java - como dominar OOPs com encapsulamento?



Este artigo sobre encapsulamento em Java ajudará você a entender os principais conceitos de ocultar detalhes de implementação junto com vários exemplos simples.

A Programação Orientada a Objetos, ou mais conhecida como OOPs, é um dos principais pilares do Java que alavancou seu poder e facilidade de uso. Para se tornar um desenvolvedor Java profissional, você deve obter um controle perfeito sobre os vários gostar , Abstração , Encapsulamento e polimorfismo. Por meio deste artigo, darei a você uma visão completa de um dos conceitos mais importantes de OOPs, ou seja, Encapsulamento em Java e como ele é alcançado.

Abaixo estão os tópicos que irei discutir neste artigo:





Você também pode passar por esta gravação de onde você pode entender os tópicos de forma detalhada com exemplos.



Introdução ao Encapsulamento

Encapsulamento refere-se ao agrupamento de dados em uma única unidade. É o mecanismo que vincula o código e os dados que ele manipula. Outra forma de pensar sobre o encapsulamento é que ele é um escudo protetor que evita que os dados sejam acessados ​​pelo código fora desse escudo. Neste, as variáveis ​​ou dados de um está oculto de qualquer outra classe e pode ser acessado apenas por meio de qualquer função de membro da própria classe na qual foram declarados.

Agora, vamos pegar o exemplo de uma cápsula médica, onde o medicamento está sempre seguro dentro da cápsula. Da mesma forma, por meio do encapsulamento, os métodos e variáveis ​​de uma classe ficam bem escondidos e seguros.



Encapsulation -Encapsulation in Java-EdurekaO encapsulamento em Java pode ser alcançado por:

  • Declarando as variáveis ​​de uma classe como privadas.
  • Fornecimento de métodos setter e getter públicos para modificar e visualizar os valores das variáveis.

Agora, vamos examinar o código para obter uma melhor compreensão do encapsulamento:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Como você pode ver no código acima, eu criei uma classe Student que tem um privado nome . Em seguida, criei um getter e um setter para obter e definir o nome de um aluno. Com a ajuda desses métodos, qualquer classe que deseja acessar a variável name tem que fazer isso usando os métodos getter e setter.

Agora vamos ver mais um exemplo e entender o encapsulamento em profundidade. Neste exemplo, a classe Car possui dois campos –name e topSpeed. Aqui, ambos são declarados como privados, o que significa que não podem ser acessados ​​diretamente fora da classe. Temos alguns métodos getter e setter, como getName, setName, setTopSpeed ​​etc., e eles são declarados como públicos. Esses métodos são expostos a “estranhos” e podem ser usados ​​para alterar e recuperar dados do objeto Carro. Temos um método para definir a velocidade máxima do veículo e dois métodos getter para recuperar o valor da velocidade máxima em MPH ou KMHt. Então, basicamente, isso é o que o encapsulamento faz - ele oculta a implementação e nos dá os valores que queremos. Agora, vamos dar uma olhada no código abaixo.

package Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Aqui, o programa principal cria um objeto Car com um determinado nome e usa o método setter para armazenar a velocidade máxima para esta instância. Fazendo isso, podemos obter facilmente a velocidade em MPH ou KMH sem nos preocupar com como a velocidade é convertida na classe Carro.

tipos de funções em sql
package Edureka public class Exemplo {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8 litros V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'a velocidade máxima em MPH é' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'a velocidade máxima em KMH é' + car.getTopSpeedKMH ())

So, é assim que o encapsulamento pode ser alcançado em Java. Agora, vamos prosseguir e ver por que precisamos do encapsulamento.

Por que precisamos de encapsulamento em Java?

O encapsulamento é essencial em Java porque:

  • Ele controla a forma de acessibilidade de dados
  • Modifica o código com base nos requisitos
  • Nos ajuda a conseguir um casal solto
  • Alcança a simplicidade de nosso aplicativo
  • Também permite que você altere a parte do código sem interromper qualquer outra função ou código presente no programa

Agora, vamos considerar um pequeno exemplo que ilustra a necessidade de encapsulamento.

class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

No exemplo acima, ele contém duas variáveis ​​de instância como modificador de acesso. Portanto, qualquer classe dentro do mesmo pacote pode atribuir e alterar valores dessas variáveis, criando um objeto dessa classe. Portanto, não temos controle sobre os valores armazenados na classe Aluno como variáveis. Para resolver este problema, encapsulamos a classe Aluno.

Então, esses foram os poucos indicadores que retratam a necessidade do Encapsulamento. Agora, vamos ver alguns benefícios do encapsulamento.

Benefícios do encapsulamento

    • Ocultação de dados: Aqui, o usuário não terá ideia sobre a implementação interna da classe. Mesmo o usuário não saberá como a classe está armazenando valores nas variáveis. Ele só estará ciente de que estamos passando os valores para um método setter e que as variáveis ​​estão sendo inicializadas com aquele valor.
    • Maior flexibilidade: Aqui, podemos tornar as variáveis ​​da classe somente leitura ou somente gravação, dependendo de nossos requisitos. No caso de você desejar tornar as variáveis ​​como somente leitura, então temos que omitir os métodos setter como setName (),setAge() etc. ou se desejarmos tornar as variáveis ​​somente para gravação, devemos omitir os métodos get como getName (), getAge () etc. do programa acima.
    • Reutilização: Também melhora a reutilização e é fácil de alterar com novos requisitos.

Agora que entendemos os fundamentos do encapsulamento, vamos mergulhar no último tópico deste artigo e entender o encapsulamento em detalhes com a ajuda de um exemplo em tempo real.

Um exemplo em tempo real de encapsulamento

Vamos considerar um exemplo de televisão e entender como os detalhes de implementação interna são ocultados da classe externa.Basicamente, neste exemplo, estamos ocultando dados de código interno, ou seja, circuitos do mundo externo pela tampa. Agora em , isso pode ser feito com a ajuda de modificadores de acesso. Os modificadores de acesso definem o acesso ou nível de uma classe, variáveis ​​de construtores etc. Como você pode ver no código a seguir, usei o modificador de acesso privado para restringir o nível de acesso da classe. Variáveis ​​declaradas como privadas são acessíveis apenas dentro da classe Television.

public class Television {private double width private double height private double Screensize private int maxVolume imprimir int volume private boolean power public Television (double width, double height, double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (canal interno) {switch (canal) {case1: return 34,56 case2: return 54,89 case3: return 73,89 case1: return 94,98} return 0} public int diminuirVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // Lança um erro porque a variável é privada e não pode ser acessada fora da classe}}

No exemplo acima, declarei todas as variáveis ​​como privadas e métodos, construtores e classe como públicas. Aqui, construtores, métodos podem ser acessados ​​fora da classe. Quando eu crioum objetoda classe Television, ele pode acessar os métodos e construtores presentes na classe, enquanto as variáveis ​​declaradas com o modificador de acesso privado ficam ocultas. É por isso que quando você tenta acessar variável de largura no exemplo acima, ele jogaum erro. É assim que os detalhes de implementação internos são ocultados das outras classes. É assim que o encapsulamento é obtido em Java.

Isso nos leva ao final deste artigo sobre “Encapsulamento em Java”. Espero que você tenha achado informativo e tenha ajudado a agregar valor ao seu conhecimento. Se você deseja aprender mais sobre Java, você pode consultar o

Agora que você entendeu 'o que é encapsulamento em Java', verifique o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso de certificação e treinamento Java J2EE e SOA da Edureka é projetado para estudantes e profissionais que desejam ser um desenvolvedor Java. O curso foi elaborado para dar a você uma vantagem inicial na programação Java e treiná-lo para os conceitos básicos e avançados de Java, juntamente com várias estruturas Java como Hibernate e Spring.

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog “Encapsulation in Java” e entraremos em contato com você o mais breve possível.