�� ������ ��ſ��� 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�� Ŭ���Ͻʽÿ�. �׸��� ���ϴ� �ʵ�� ĸ���� �־��� ���Դϴ�.
|