Back-end/JAVA,Spring

[JAVA]캡슐화란? encapsulation. 추상클래스란? Abstract class

cheersHena 2018. 6. 4. 15:21
반응형
캡슐화 encapsulation.
중요한 데이터를 보존, 보호하는 것.
일반적으로 연관있는 변수와 함수를 클래스로 묶는 작업이나 캡슐화는 은닉성이 있어서 클래스에 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하게 하는 것.

e.g) 우리집 클래스.
거실 public
엄빠방 : 상위클래스 public 
내방: 서랍 private //접근 불가
         내돈 private //접근 불가
        +public void 용돈받기 ( int 돈) { //private내돈에 접근할수있는 우회로.
          (내돈) = 내돈 + 돈;
             }
        public int 내용돈 얼마(){
            return (내 돈);
         }
 쓰레기통 public //누구나 접근 가능.

추상클래스 Abstract class 
미완성 설계도. 즉, 미완성 (추상) 메서드가 포함되어 있다.
선언부만 있고 구현부는 없는 메서드. 즉 설계만 해놓고 실제 수행내용은 없으므로 미완성 메서드.
구현부는 각 하위클래스에서 각자 필요성에 맞게 커스터마이징 하여 사용할 수 있음.
추상클래스 자체로는 클래스로서의 역할을 다 못하지만 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 가짐. 
e.g.)
상급 부서에서 지각하지 말라고 지시.(실체없다)
나는 지각하지 않기 위해 수단과 방법을 찾아 실행함. (실체 구현)
A은행 서초지점, 강남지점 (지점 = 영업점 )
지점 고유 기능 - 출잡 / 대출 .. .

경기영업본부 - 용인지점, 수원지점, 동탄지점
  선물주기: 각 지점은 라면 1봉씩 지급.
  금리 더 주기 : 지점장이 알아서 더 줘라.

/*주석을 통해 어떤 기능 수행 목적으로 작성하였는지 설명한다*/
abstract 리턴타입 메서드이름(); 

abstract class Player{ // 추상 클래스 플레이어
abstract void play (int pos); //추상 메서드 플레이 
abstract void stop(); //추상 메서드 스탑 
}
class AudioPlayer extends Player {
void play(int pos) { // 하위 클래스에서 추상메서드를 구현. 
//내용 blablabla ....
}
void stop() { // 하위 클래스에서 추상메서드를 구현. 
//내용 blablabla ....
}
}

★☆

오버로딩 @overroad
메서드명 동일, 매개변수 개수와 타입 다르면

오버라이딩 @override
선언부가 똑같다. 구현부 변경가능.

패키지 Package 
= 디렉토리 diretory : 자바소스(파일) 관리 위해 사용

임포트 Import 
다른 패키지에 있는 파일 참조위해 사용

제어자Modifier 

접근제어자: public, protected, (default), private
                 : 그외: static, final, abstract ... 
  • public: 접근 제한 없음. 외부에서 접근 가능
  • protected: 동일 패키지 내에 존재하거나 상속 클래스에서만 접근가능.
  • default: 아무 명시 없이 선언을 하면 default값이 되며, 동일 패키지 내에서만 접근이 가능. 
  • private: 자기 자신의 클래스 내에서만 접근가능. public getter, setter 메서드로 우회 접근 가능.

캡슐화 encapsulation
데이터 보호 위해 숨긴다.
private 접근제어자 사용하여. 외부에서 우회하여 접근하게 해줘야 함.
     getter: get 변수이름 - 변수값 리턴. 되돌려준다. 
     setter : set 변수이름 - 변수에 값 셋팅(대입)

추상 abstract: 실체가 없는 것.
추상 메서드: 선언부만 존재하고 구현부가 없다.
추상 클래스: 미완성상태. 즉 추상메서드가 있는 클래스.




반응형