�� ������ ��ſ��� Encapsulate
Fields �����丵 ��ɿ� ���� �������� overview�� how �� �����丵�� IntelliJ IDEA���� ���� �� �ִ°��� �����մϴ�.
����� ������ �����, ���� �ҵ�(���� ���Ϳ� ���� �θ���)�� �����ϴ� �ܺ��� �������̽��� ���Ͽ� �װͿ� �����ϴ� ���� �Ϲ������� ���� IDEA�Դϴ�. �Ŀ� ����� Ŭ������ �����ϴ� �ڵ�� �Բ� ���� ȣȯ���� �� ���� �ҵ带 �����ϰ� �ִ� ������ ������ ������ �� �ֽ��ϴ�. Encapsulate
Fields �����丵�� ��ſ��� ����� ������ �����, �ʿ��� ������ �����ϴ� ���� ����մϴ�.
���� ���, �츮�� ���� Ŭ������ �����ϴ�:
public class Foo {
public int field;
public Foo(){
field = 5;
}
public int calcValue( int value){
return field + value;
}
}
class Bar {
private Foo foo;
public int calcValue( int value){
return foo.field + value;
}
}
�ʵ�field�� ĸ���� �־��� �� �Դϴ�. �����丵 ����, �ʵ�� ������ ���̰� �� ������ ����Ǹ� ���� �ҵ尡 �����˴ϴ�:
public class Foo {
private int field;
public Foo(){
setField(5);
}
public int calcValue( int value){
return getField() + value;
}
public int getField(){
return field;
}
public void setField( int field){
this. field = field;
}
}
class Bar {
private Foo foo;
public int calcValue( int value){
return foo.getField() + value;
}
}
����� �Ƹ��� Use
accessors even when the field is accessible �� ���� �����ϴ� �Ϳ� ���� �ʵ尡 ���̴� ������ ������ ������� �ʴ� ���� ������ ���� �ֽ��ϴ�.
�ʵ带 ĸ���� �ֱ� ���Ͽ�:
1. Project �����:
Ŭ������ �����ϰ� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� ������ Refactor |
Encapsulate Fields... �� Ŭ���Ͻʽÿ�.
OR
�ʵ带 �����ϰ� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� ������ Refactor |
Encapsulate Fields... �� Ŭ���Ͻʽÿ�.

|
�����
Ŭ���� �Ǵ� �ʵ带 �����ϱ� ���� �ٸ� ��� ����, ���� ��� Structure �� ����� �� �ֽ��ϴ� .
|
editor ���� :
���ϴ� �ʵ忡���� ij���� ��ġ�ϰ�, ���� ������ �Ǵ� �����Ϳ��� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� ������Refactor |
Encapsulate Fields �� Ŭ���մϴ�.
OR
������ Ŭ������ ������ ��� ��ҿ��� ij���� ��ġ�ϰ�, ���� ������ �Ǵ� �����Ϳ��� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� ������Refactor |
Encapsulate Fields �� Ŭ���մϴ�.
2. �� ��, ���� ������� �����丵 �Ű� ������ �����ϱ� ���� ��Ÿ�� ���Դϴ�. ���� �ʵ尡 ������ ���õǸ� ���� �� ���̾�α� �����쿡�� ���õ� ���Դϴ�.

Encapsulate Fields ���̾�α״� �Ʒ� ����� ������ �ɼ� ���� �����ϴ�:
Fields to Encapsulate
|
�� �ɼ� ���� Getter �� Setter �ҵ忡 ���� �̸��� �Բ� Ŭ�������� �ʵ��� ����� �����մϴ�.
������� ����� �ʿ��� �ʵ带 ������ �� �ֽ��ϴ�.
���� ����� �װ��� Ŭ���ϴ� �Ϳ� ���� �ҵ� �̸��� ������ ������ �� �ֽ��ϴ�.
���� ���� �ñ׳����� �ִ� �ҵ尡 ������ �� Ŭ������ �̹� �����ϸ�, Method ������ �� �����ϴ� ���ü� �����ܰ� �Բ� ���� �̸��� �������� ��Ÿ���ϴ�. � ���ο� ���� �ҵ嵵 �� ��� �������� ���� ���Դϴ�. ���� �ҵ�� ������� ���� ���Դϴ�. ���� �Ϲ�������, �� ���� �ƹ��͵� �ΰ������� Ȯ�ε��� ���� ���Դϴ�.
�� ��� ���� �ҵ尡 ������ ������ ����� �ϴ��� ����� �����ؾ߸� �մϴ�.
���� ������, ����� ������ �� �ٸ� �̸��� �����ϰų� �����ͷ� ���ƿ� �ʿ䰡 �������� ��, ���� �ҵ带 ���������� ��, ������ �� ���� Encapsulate Fields �����丵�� �ٽ� ȣ�������� �ϴ�. ���� ���� �ҵ尡 �θ� Ŭ������ �ҵ带 �������̵� �ϰų� �Ǵ� �����Ѵٸ�, �װ��� Overrides method �Ǵ� Implements method ���������� ��ũ�� �� �Դϴ�.
������ �ҵ尡 ������� Ŭ������ �ȿ� �������� ������ ���� ���� �����Ǿ��ٸ�, ���� �װ��� �θ� Ŭ������ �ҵ带 �������̵� �ϰų� �Ǵ� �����ϴ� ���� �����Ѵٸ�, �� �ҵ�� ������ ���� �̸��� ���ʿ� Overrides
method �Ǵ� Implements method ���������� ��ũ�� �� �Դϴ�. ���ο� ���� �ҵ�� ������ ���Դϴ�. ����, ����� �̰��� ���� �ҵ带 ���Ӱ� �����ߴٴ� ����� �ݵ�� ����� �װ��� ��ȹ�ߴ� ���� �ƴ����� �� �θ� Ŭ������ �ҵ带 ������ �������̵� �ϰų� ������ ���� ���� �˰� �־�߸� �մϴ�. �� ���, ����� ������ �� �ٸ� �̸��� �����ϰų� �����Ϳ� ���ƿ� �ʿ䰡 �������� ��, ���� �ҵ带 ���������� ��, ���� �� ���� Encapsulate
Fields �����丵�� �ٽ� ȣ�������� �ϴ�.
|
Encapsulate
|
�� �ɼ� ���� ����� ���ϴ� �ʵ带 ���Ͽ� �����DZ⸦ ���ϴ� ���� �ҵ�( Getter , Setter �Ǵ� �Ѵ�)�� �װ��� �����ϴ� ���� ����ڿ��� ����մϴ�.
���� üũ �ڽ� ���� �� ���� Fields to Encapsulate ���� ��ü �����ϴ� Į��(Getter �Ǵ� Setter )�� ���� �����Ǹ� ���̺��� ȸ������ �� ���Դϴ�.
|
�ɼ�
|
���� Use
accessors even when the field is accessible�� ���õ��� ������, �ʵ尡 ���� ���� ������ �� �ִ� ���ϴ� �ʵ忡�� ������ �ٲ��� ���� ���Դϴ�. ���� ������, ���� üũ �ڽ��� ���õǸ� ���ϴ� �ʵ忡�� ��� ������ ���� �ݷ� ��ü�� ���Դϴ�. �װ͵� �Ʒ��� ����� Encapsulated Fields' Visibility ���� ����� ���ÿ� �����մϴ�.
���� ���, ���� ����� Use accessors even when the field is
accessible üũ �ڽ��� ���� �����ϰ�, �ʵ带 ���� private �� ���ü��� �����ϸ�, Ŭ���� ������ ���� ���� ������ ���� ���� ���� ���� Ŭ���� �ٱ����� �ʵ��� ����� ����� ���Դϴ�.
|
Encapsulated
Fields' Visibility
|
�� �ɼ� ���� �����丵 ���� �ʵ尡 ���� ���ϴ� �ʵ带 ���� ���ü� �������� �����ϱ� ���� ���˴ϴ�:
Private
Package
local
Protected
Retain
visibility as previously set

|
�� ��� Use
accessors even when the field is accessible üũ �ڽ��� �Ұ����ϰ� �˴ϴ�.
|
|
Accessors'
Visibility
|
�� �ɼ� ���� ���ü� ������ ������ ���� �ҵ忡 ���߱� ���� ���˴ϴ�:
Public
Protected
Package
local
Private
|
����� �̸� ���� ���
|
üũ �ڽ��� �����ϸ� ��ſ��� � ����� �߰ߵǾ����� ��� ����ϰ� �ְ�, ���� ��ü�� �����ϵ��� ����մϴ�. �� üũ �ڽ��� ���õ��� ���� ��, IDEA�� ��ü�� �ڵ������� �����մϴ�.

|
������ üũ �ڽ��� Ȯ�ε��� �ʾ��� ����, ���� �߰ߵ� ����� � �б� ���� ���Ͽ��� �����ϸ� ��ſ��� ��� ��ü�� Ȯ���ϱ� ���� ������Ʈ �� �� �Դϴ�.
|
Refactoring Preview ���̾�α��� (���� �װ��� ��Ÿ����) ����� ����� ������ �м��� �� �ֽ��ϴ�. �����丵�� �Բ� �����ϱ� ���ؼ�, Do
Refactor�� Ŭ���մϴ�, ���� �ʴٸ� Cancel �� Ŭ���մϴ�. ���� ���� ������ Refactoring
Preview�� ���ʽÿ�.
|
|
OK�� Ŭ���Ͻʽÿ�. ���� ���ϴ� �ʵ�� ĸ���� �־��� ���Դϴ�.
|