728x90
반응형
Encapsulation ( 캡슐화 )
<1>제한자
- 제한자 (modifier) 클래스, 변수, 메서드 선언부와 함꼐 사용되어 부가적인 의미를 부여
- 접근 제한자 : private, default(package), protected, public
- static : 클래스 레벨의 요소 설정
- final : 요소를 더이상 수정할 수 없게 함
- abstract: 추상 메서드 및 추상 클래스 작성
- synchronized: 멀티 스레드에서의 동기화 처리
- 접근 제한자
public class Parent{
public int publicVar;protected int protectedVar;int defaultVar;private int privVar;
public void useMember(){
this.publicVar=10; this.protectedVa= 10;this.defaultVar=10;this.privVar 10;}
}
public class Child extends Parent{
public void useMember(){
this.publicVar = 10;
this.protectVar =10;
this.defaultVar=10; //가능
this.privVar =10 ;
this.some = 10; //불가능
}
}
public class Friend {
public void method(){
p.publicVar=1;
p.protectVar=1;
p.defaultVar =1; //가능
p.privVar=1; //not visible
}
}
🧸 하나의 대상에 여러 제한자를 조합 가능하나, 접근 제한자는 하나만 사용 가능하다 → Eclipse 를 열어보면, class 생성 시 modifiers란을 보면 접근제한자는 radio button으로 하나만 설정할 수 있지만, abstract나 final 은 중복 선택 가능한 것을 확인해볼 수 있다.
🧸 순서는 무관하나 일반적으로 접근 제한자를 맨 앞으로 사용한다
🧸 final 용도 :
- final class: 더이상 확장 할 수 없음 - 상속 금지 → 오버라이드를 방지 (이미 완벽^^)
- final method: 더이상 재정의 불가 → 오버라이딩 금지
- final variable: 더이상 값을 바꿀 수 없음 → 상수화
<2>캡슐화
🤦🏻♀️ Eclipse > Source 들어가면 constructors, getters and setters 를 자동으로 생성해준다 !
데이터 은닉과 보호
외부에서 변수를 직접 접근한다면 소중한 정보가 보호되지 못한다. 따라서, 변수를 private 접근으로 막고 공개되는 메서드를 통해 접근 통로를 따로 마련해준다 (Setters & Getters)
<3>싱글턴 디자인 패턴
- 객체의 생성을 제한해야 하는 경우
- 여러개의 객체가 필요 없는 경우: 수정가능한 맴버변수가 없고 기능만 있는 경우 (stateless)
- 객체를 계속 생성/ 삭제하는데 많은 비용이 들어서 재사용이 유리할 경우
- 싱글턴 디자인 패턴
- 생성자의 접근 제한자를 private으로 설정하여 외부에서 생성자에 접근 금지
- 내부에서는 private에 접근 가능하므로 직접 객체 생성 → 맴버 변수이므로 private
- Getter 생성 : 외부에서 private member에 접근 가능하게 함(setter는 필요x)
- Getter 와 변수에 static을 추가하여 객체 없이 외부에서 접근할 수 있도록 함
🧸 외부에선 getter 을 통해서 객체를 참조하기때문에 하나의 객체만 재사용할수있다
728x90
반응형
'취준 > JAVA' 카테고리의 다른 글
List (0) | 2022.05.18 |
---|---|
QUEUE (0) | 2022.05.18 |
다형성 (0) | 2022.05.17 |
상속 (0) | 2022.05.17 |
추상화 (0) | 2022.05.17 |