1/30 접근제어자 private

이 글은 2019년 홍익대학교 자바 겨울 특강 수업을 메모한 것이다.

당시에는 에버노트에 메모해놨었기 때문에,

티스토리 블로그를 시작하면서 백업해둔다.


 

접근 제어자
클래스의 멤버 변수와 멤버 메소드의 외부 접근 제한
 
접근제어자 사용 이유(hiding/encapsulation)(은닉화/캡슐화)
  1. 클래스 내부 데이터 보호
  2. 2. 클래스 내부에서만 사용되거나 내부에서 임시로 사용되는 멤버변수 or 멤버메소드들을 클래스 내부에 감추기 위해 (감춤)
  3. 3. 외부에서 접근할 필요가 없는 멤버들을 외부에 노출시키지 않음으로서 복잡성을 줄임(hiding/encapsulation) (복잡성을 줄임)
 
public : 외부 클래스에서의 접근 모두 허용
privatie : 외부 클래스의 접근이 모두 차단/같은 클래스에서만 접근가능. 제한적인의 의미로도 쓰인다. 
pretected : 상속관계를 가진 클래스와 같은 패키지안의 클래스들끼리는 public 접근, 그 외의 클래스들ㅇ레게는 private 접근
default : 같은 패키지 내에서의 클래스들끼리 접근 가능(기본값) (패키지는 chapter6를 말함. amp와 oop는 서로 접근이 가능하다는 것)
 
접근 제어 범위
public > protected > default > private
 

 
영역을 침범해서 접근하여 뉴카를 생ㅅ어해왔음. amp 클래스에서 카클래스 영역에 접근해와서 사용한다는 것과 같은 의미.
만약에 카 클래스에 접근할 수 없다면 amp 클래스에서는 뉴카 를 만들지 못한다.
 
amp에서 car 클래스로 접근은 되는데 int speed에는 접근을 모하도록 설정할 수 있다.
 

 
getter와 setter : 은닉화 한 것에 구조적으로는 접근 가능하도록 만들어준다.
 

 
package chapter6;
class car {
    int speed;
    int wheel;
    String carname;
    
    car() {
        
    }
    
    void setspeed(int speed) {
        this.speed = speed;
    }
    
    //void 무, 형태가 정해지지 않았다, 존재하지 않는
    
    int getspeed() { //메소드의 형태가 정수형이다. 왜냐면 돌려줘야할 값 speed가 int형이기 때문이다.
        //메소드 자체가 사용되면 메소드를 통해 사용된 값을 우리한테 바로 돌려줄수있다.
        //그 명령어가 return이다.
        //어디로 return해주냐면 mycar.getspeed에.
        return this.speed;
    }
    
    void speedup() {
        speed++;
    }
    
    void speeddown() {
        speed--;
    }
    
    void stop() {
        
    }
}
public class amp {
    public static void main(String[] args) {
        car mycar = new car();
        // car.speed = 1; //access_modifier class에서 접근불가
        mycar.speed = 1; //access_modifier class에서 접근불가
        mycar.setspeed(10);
        mycar.speedup();
        System.out.println(mycar.getspeed());
    }
}

'┝ 개발 언어 > ┎ JAVA' 카테고리의 다른 글

1/28 오버라이딩  (0) 2022.03.01
1/28 상속  (0) 2022.03.01
1/28 클래스 변수와 인스턴스 변수  (0) 2022.03.01
1/28 oop_this  (0) 2022.03.01
1/28 오버로딩  (0) 2022.03.01