logo

Java의 캡슐화

Java의 캡슐화코드와 데이터를 하나의 단위로 묶는 과정 , 예를 들어 여러 약품을 혼합한 캡슐입니다.

자바 char을 int로 변환
자바의 캡슐화

클래스의 모든 데이터 멤버를 비공개로 만들어 Java에서 완전히 캡슐화된 클래스를 만들 수 있습니다. 이제 setter 및 getter 메소드를 사용하여 데이터를 설정하고 가져올 수 있습니다.

그만큼 자바 빈 class는 완전히 캡슐화된 클래스의 예입니다.

Java 캡슐화의 장점

Setter 또는 Getter 메소드만 제공하여 클래스를 만들 수 있습니다. 읽기 전용 또는 쓰기 전용 . 즉, getter 또는 setter 메서드를 건너뛸 수 있습니다.

그것은 당신에게 다음을 제공합니다 데이터에 대한 통제 . 100보다 커야 하는 id 값을 설정하려고 한다고 가정하면 setter 메서드 내에 논리를 작성할 수 있습니다. setter 메소드에 음수를 저장하지 않도록 로직을 작성할 수 있습니다.

달성하는 방법입니다 데이터 숨기기 Java에서는 다른 클래스가 개인 데이터 멤버를 통해 데이터에 액세스할 수 없기 때문입니다.

캡슐화 클래스는 테스트하기 쉽다 . 따라서 단위 테스트에 더 좋습니다.

이진 트리 우편 주문 순회

표준 IDE는 getter 및 setter를 생성하는 기능을 제공합니다. 그래서 그것은 캡슐화된 클래스를 쉽고 빠르게 생성 자바에서.

Java 캡슐화의 간단한 예

setter 및 getter 메소드가 있는 필드가 하나만 있는 간단한 캡슐화 예를 살펴보겠습니다.

파일: Student.java

모니터 크기를 결정하는 방법
 //A Java class which is a fully encapsulated class. //It has a private data member and getter and setter methods. package com.javatpoint; public class Student{ //private data member private String name; //getter method for name public String getName(){ return name; } //setter method for name public void setName(String name){ this.name=name } } 

파일: Test.java

 //A Java class to test the encapsulated class. package com.javatpoint; class Test{ public static void main(String[] args){ //creating instance of the encapsulated class Student s=new Student(); //setting value in the name member s.setName('vijay'); //getting value of the name member System.out.println(s.getName()); } } 
 Compile By: javac -d . Test.java Run By: java com.javatpoint.Test 

산출:

 vijay 

읽기 전용 클래스

 //A Java class which has only getter methods. public class Student{ //private data member private String college='AKG'; //getter method for college public String getCollege(){ return college; } } 

이제 'AKG'라는 대학 데이터 멤버의 값을 변경할 수 없습니다.

 s.setCollege('KITE');//will render compile time error 

쓰기 전용 클래스

 //A Java class which has only setter methods. public class Student{ //private data member private String college; //getter method for college public void setCollege(String college){ this.college=college; } } 

이제는 대학의 가치를 얻을 수 없고, 대학 데이터 구성원의 가치만 바꿀 수 있습니다.

 System.out.println(s.getCollege());//Compile Time Error, because there is no such method System.out.println(s.college);//Compile Time Error, because the college data member is private. //So, it can't be accessed from outside the class 

Java 캡슐화의 또 다른 예

setter 및 getter 메소드가 있는 필드가 4개만 있는 캡슐화의 또 다른 예를 살펴보겠습니다.

파일: Account.java

Desktop.ini가 뭐죠?
 //A Account class which is a fully encapsulated class. //It has a private data member and getter and setter methods. class Account { //private data members private long acc_no; private String name,email; private float amount; //public getter and setter methods public long getAcc_no() { return acc_no; } public void setAcc_no(long acc_no) { this.acc_no = acc_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } } 

파일: TestAccount.java

 //A Java class to test the encapsulated class Account. public class TestEncapsulation { public static void main(String[] args) { //creating instance of Account class Account acc=new Account(); //setting values through setter methods acc.setAcc_no(7560504000L); acc.setName('Sonoo Jaiswal'); acc.setEmail('[email protected]'); acc.setAmount(500000f); //getting values through getter methods System.out.println(acc.getAcc_no()+' '+acc.getName()+' '+acc.getEmail()+' '+acc.getAmount()); } } 
지금 테스트해보세요

산출:

 7560504000 Sonoo Jaiswal [email protected] 500000.0