본문 바로가기

Java/이론

[Java] 캡슐화(Encapsulation)

캡슐화멤버변수에 접근할 수 있는 '통로'를 만들고

그 통로에 안전장치를 하는 개념입니다.

즉 외부에 노출할 필요가 없는 정보들을

캡슐처럼 감싸서 '은닉'하는 기능이라고 할 수 있습니다.

멤버변수를 외부에서 직접 건드릴 수 없도록 'private'를 걸어놓음으로써

캡슐화를 할 수 있습니다.

그러면 private 변수를 외부에 출력하거나 리턴은 어떻게할까요?

바로 getter와 setter기능을 이용해서 하면 됩니다.

getter와 setter 기능을 단축키를 심어서

사용하면 편리한데요.

단축키를 심는 과정입니다.

 

메뉴 - Window - Preferences - 왼쪽 상단에 'keys' 검색

- 화면 바뀌면 - 중앙 검색란에 'generate'를 검색 - Generate Getters and Setters 선택

- 원하는 단축 키 binding - Apply

 

Preferences

 

 

 

 getter - setter 함수를 만들어 볼까요?

 

 

public class Human {

private String name;

private int age;

private double weight;

 

클래스에 private로 변수를 선언하고

 

public Human() {

// TODO Auto-generated constructor stub

}

 

단축키를 누르면

 

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public void printInfo() {

System.out.println(name);

System.out.println(age);

}

}

 

이렇게 get함수와 set함수가 생성됩니다.

 

Human h = new Human();

h.setName("hihi");

h.setAge(-25);

System.out.print(h.getName());

h.printInfo();

 

main에서 get함수를 사용해서

set함수로 넣은 변수를 불러올 수 있고

set함수를 사용해서 변수를 넣을 수 있습니다.

 

출력 내용

 

 

 

캡슐화를 함으로써

멤버 변수의 외부 노출을 막을 수 있고

외부에 영향을 주지않아서

유지 보수도 용이하기 때문에

앞으로 private 접근 제어자를 많이 사용할 것 같습니다.

 

'Java > 이론' 카테고리의 다른 글

[Java] 다형성(Polymorphism)  (0) 2024.12.13
[Java] 추상화 (abstract)  (0) 2024.12.13
[Java] 접근 제어자(Access Modifier)  (0) 2024.12.13
[Java] 상속(Inheritance)  (0) 2024.12.12
[Java] A has B  (0) 2024.12.12