자바 캡슐화 – 캡슐화로 OOP를 마스터하는 방법?



Java의 캡슐화에 대한이 기사는 다양한 간단한 예제와 함께 구현 세부 정보를 숨기는 핵심 개념을 이해하는 데 도움이됩니다.

객체 지향 프로그래밍 또는 더 잘 알려진 OOP는 Java의 성능과 사용 편의성을 활용 한 Java의 주요 기둥 중 하나입니다. 전문 Java 개발자가 되려면 다양한 소프트웨어를 완벽하게 제어해야합니다. 처럼 , 추출 , 캡슐화 및 다형성. 이 기사의 매체를 통해 OOP의 가장 중요한 개념 중 하나, 즉 Java의 캡슐화와 그 달성 방법에 대한 완전한 통찰력을 제공 할 것입니다.

다음은이 기사에서 논의 할 주제입니다.





이 기록을 살펴볼 수도 있습니다. 예제를 통해 주제를 자세하게 이해할 수 있습니다.



캡슐화 소개

캡슐화는 단일 단위로 데이터를 래핑하는 것을 말합니다. 코드와 그것이 조작하는 데이터를 바인딩하는 메커니즘입니다. 캡슐화에 대해 생각하는 또 다른 방법은이 쉴드 외부의 코드가 데이터에 액세스하는 것을 방지하는 보호 쉴드입니다. 여기에서 변수 또는 데이터는 다른 클래스에서 숨겨져 있으며 자신이 선언 된 클래스의 멤버 함수를 통해서만 액세스 할 수 있습니다.

SQL 쿼리의 if 문

이제 약물이 캡슐 내부에 항상 안전한 의료용 캡슐의 예를 들어 보겠습니다. 마찬가지로 캡슐화를 통해 클래스의 메서드와 변수는 잘 숨겨지고 안전합니다.



캡슐화-Java-Edureka의 캡슐화Java에서 캡슐화는 다음을 통해 수행 할 수 있습니다.

  • 클래스의 변수를 전용으로 선언합니다.
  • 변수 값을 수정하고 볼 수있는 공용 setter 및 getter 메서드를 제공합니다.

이제 캡슐화를 더 잘 이해하기 위해 코드를 살펴 보겠습니다.

public class Student {private String 이름 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 ())}}

위의 코드에서 볼 수 있듯이 개인이있는 학생 클래스를 만들었습니다. 이름 . 다음으로 학생의 이름을 가져오고 설정하기 위해 getter와 setter를 만들었습니다. 이러한 메서드의 도움으로 이름 변수에 액세스하려는 모든 클래스는 이러한 getter 및 setter 메서드를 사용하여 수행해야합니다.

이제 한 가지 예를 더보고 캡슐화를 자세히 살펴 보겠습니다. 이 예에서 Car 클래스에는 name과 topSpeed라는 두 개의 필드가 있습니다. 여기서 둘 다 private으로 선언되어 클래스 외부에서 직접 액세스 할 수 없습니다. getName, setName, setTopSpeed ​​등과 같은 getter 및 setter 메서드가 있으며 public으로 선언됩니다. 이러한 메서드는 '외부 사용자'에 노출되며 Car 개체에서 데이터를 변경하고 검색하는 데 사용할 수 있습니다. 차량의 최고 속도를 설정하는 한 가지 방법과 MPH 또는 KMHt로 최대 속도 값을 검색하는 두 가지 게터 방법이 있습니다. 따라서 기본적으로 캡슐화가 수행하는 작업입니다. 구현을 숨기고 원하는 값을 제공합니다. 이제 아래 코드를 살펴 보겠습니다.

리눅스 관리자는 무엇을합니까
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}}

여기서 메인 프로그램은 주어진 이름으로 Car 객체를 만들고 setter 메서드를 사용하여이 인스턴스의 최고 속도를 저장합니다. 이렇게하면 Car 클래스에서 속도가 어떻게 변환되는지 신경 쓰지 않고 MPH 또는 KMH로 속도를 쉽게 얻을 수 있습니다.

package Edureka public class Example {public static void main (String args []) Car car = new Car () car.setName ( 'Mustang GT 4.8-litre V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'MPH의 최고 속도는'+ car.getTopSpeedMPH ()) System.out.println (car.getName () + 'KMH의 최고 속도는'+ car.getTopSpeedKMH ())

에스o, 이것이 자바에서 캡슐화가 달성되는 방법입니다. 이제 더 나아가서 캡슐화가 필요한 이유를 살펴 보겠습니다.

Java에서 캡슐화가 필요한 이유는 무엇입니까?

캡슐화는 다음과 같은 이유로 Java에서 필수적입니다.

  • 데이터 접근성 방식을 제어합니다.
  • 필수 조건에 따라 코드를 수정합니다.
  • 느슨한 부부를 이루도록 도와줍니다
  • 응용 프로그램의 단순성 달성
  • 또한 프로그램에있는 다른 기능이나 코드를 방해하지 않고 코드의 일부를 변경할 수 있습니다.

이제 캡슐화의 필요성을 보여주는 작은 예를 살펴 보겠습니다.

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}}

위의 예에서는 액세스 수정 자로 두 개의 인스턴스 변수를 포함합니다. 따라서 동일한 패키지 내의 모든 클래스는 해당 클래스의 객체를 생성하여 해당 변수의 값을 할당하고 변경할 수 있습니다. 따라서 Student 클래스에 변수로 저장된 값을 제어 할 수 없습니다. 이 문제를 해결하기 위해 우리는 Student 클래스를 캡슐화합니다.

그래서 이것들은 캡슐화의 필요성을 묘사하는 몇 가지 포인터였습니다. 이제 캡슐화의 몇 가지 이점을 살펴 보겠습니다.

캡슐화의 이점

    • 데이터 숨기기 : 여기서 사용자는 클래스의 내부 구현에 대해 전혀 알지 못합니다. 사용자조차도 클래스가 변수에 값을 저장하는 방법을 알지 못할 것입니다. 그 / 그녀는 우리가 값을 setter 메소드에 전달하고 변수가 그 값으로 초기화된다는 것을 알 것입니다.
    • 유연성 향상 : 여기서 우리는 요구 사항에 따라 클래스의 변수를 읽기 전용 또는 쓰기 전용으로 만들 수 있습니다. 변수를 읽기 전용으로 만들려면 setName ()과 같은 setter 메서드를 생략해야합니다.setAge() 등 또는 변수를 쓰기 전용으로 만들려면 위의 프로그램에서 getName (), getAge () 등과 같은 get 메서드를 생략해야합니다.
    • 재사용 성: 또한 재사용 성을 향상시키고 새로운 요구 사항에 따라 쉽게 변경할 수 있습니다.

이제 캡슐화의 기본 사항을 이해 했으므로이 문서의 마지막 항목으로 들어가 실시간 예제를 통해 캡슐화를 자세히 이해하겠습니다.

캡슐화의 실시간 예

텔레비전 예제를 고려하고 내부 구현 세부 사항이 외부 클래스에서 어떻게 숨겨져 있는지 이해해 봅시다.기본적으로이 예제에서는 내부 코드 데이터, 즉 외부 세계의 회로를 덮개로 숨 깁니다. 지금에 , 이는 액세스 수정 자의 도움으로 달성 할 수 있습니다. 액세스 한정자는 클래스, 생성자 변수 등의 액세스 또는 수준을 설정합니다. 아래 코드에서 볼 수 있듯이 개인 액세스 한정자를 사용하여 클래스의 액세스 수준을 제한했습니다. private으로 선언 된 변수는 Television 클래스 내에서만 액세스 할 수 있습니다.

public class Television {private double width private double height private double Screensize private int maxVolume print int volume private boolean power public Television (double width, double height, double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1 : return 34.56 case2 : return 54.89 case3 : return 73.89 case1 : return 94.98} return 0} public int reduceVolume () {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 () 텔레비전. // 변수가 비공개이고 클래스 외부에서 액세스 할 수 없기 때문에 오류 발생}}

위의 예에서는 모든 변수를 private으로 선언하고 메서드, 생성자 및 클래스를 public으로 선언했습니다. 여기서 생성자, 메서드는 클래스 외부에서 액세스 할 수 있습니다. 내가 만들 때객체텔레비전 클래스의 경우 클래스에있는 메서드와 생성자에 액세스 할 수 있지만 private 액세스 한정자로 선언 된 변수는 숨겨집니다. 그래서 액세스하려고 할 때 너비 변수 위의 예에서는오류. 이것이 내부 구현 세부 사항이 다른 클래스에서 숨겨지는 방식입니다. 이것이 자바에서 캡슐화가 이루어지는 방법입니다.

이것으로 '자바 캡슐화'에 대한이 기사의 끝으로 이동합니다. 희망, 당신은 그것이 유익하다는 것을 알았고 지식에 가치를 더하는 데 도움이되었습니다. Java에 대한 자세한 내용은 다음을 참조하십시오.

Windows 8에 PHP 설치

'Java의 캡슐화 란 무엇인가'를 이해 했으므로 이제 다음을 확인하십시오. 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Java 개발자가 되고자하는 학생과 전문가를 위해 설계되었습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 '자바 캡슐화'블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.