근육 트레이닝 사랑하는 문계 여학생의 Java 입문_캡슐화_private와 public

소개



최근 바이트 앞이나 다니는 시설 등에서 커뮤니케이션을 취할 기회가 늘어서 기쁩니다
「바뀌고 있다」라든가 「어쩐지 재밌네요~」라고 하는 말을 자주 말합니다··. 웃음
아르바이트를 시작하기 전에는 집에서 뭔가를하고 저녁부터 스포츠 체육관을 매일 반복했기 때문에 하루 동안 사람들과 이야기하는 것이 0 일 때도있었습니다.
그래서, 커뮤니케이션 받는 것은 진짜로 혼마에게 중요하구나~라고 진심으로 강하게 생각했습니다

이번은 액세스 제어 private와 public에 관한 것입니다.
독학으로 하고 있으므로, 「이것은 Java 해 가는데 있어서 도움이 되는 지식이야!!」라고 하는 것이 있으면, 코멘트해 주실 수 있으면 매우 기쁩니다

액세스 제어



Java에서는, 멤버(필드나 메소드)에 대해서 액세스 제어의 설정을 실시할 수가 있다.
하지만, 각각의 멤버에게 「MuscleBoy 클래스, MuscleGirl 클래스로부터의 이용은 용서한다」 「Protein 클래스, Trainer 클래스로부터의 이용은 용서한다」와 같이 세세하게 지정하는 것은 귀찮아! 그래서, 아래의 테이블에 있는 public나 private등의 액세스 수식자를 멤버의 앞에서 선언하는 것으로, 액세스 제어가 가능하게 된다



 【필드의 액세스 제어】
액세스 한정자 필드 선언;

 【메소드의 액세스 수식자】
액세스 한정자 메소드 선언 {...}

private 사용



근육 트레이닝 사랑하는 문계 여학생의 Java 입문_캡슐화의 목적 & 이점 그럼, 근육 소년의 HP가 -100이 되어 버리는 힘든 사태가 일어나 버렸다. 그래서 다른 클래스에서 근육 보이의 HP를 변경하지 않도록 HP 필드에 private 선언을 한다.
1 public class MuscleBoy{
2  private int hp;
3  String name;
4  static int money;
5
6  void sleep(){
7   this.hp = 100;
8   System.out.println(this.name + "は、寝て体力を回復した!!");
9  }
10}

hp 필드에 private 를 지정했기 때문에 다른 클래스에서 hp 필드를 변경했을 경우, 「hp 필드에는 액세스 할 수 없다」라고 하는 컴파일 에러가 발생한다.
하지만! ! 근육 보이의 HP가 일체 변경할 수 없다는 것은 아니다!

private인 필드라도, 「this」를 이용한 sleep 메소드와 같이, 같은 클래스의 메소드로부터이면 hp 필드의 값을 변경할 수 있는 것이다

public 및 package private 이용



근육 보이는 살아있는 예술 작품인 근육을 단련하는 것이 일이기 때문에 여러 클래스에서 호출할 수 있도록 workOut 메소드에 public 선언을 한다.
1  public class MuscleBoy{
2    private int hp;
3    String name;
4    static int money;
5
6    void sleep(){....}
7
8    public void workOut(){
9      this.hp -= 10;
10     System.out.println(this.name + "は、筋トレをした!");
11     System.out.println("-10ポイントHPが減少した!");
12   }
13 }

sleep 메소드에는 public를 붙이지 않은 채로 하고 있다. 이 경우, sleep 메소드는 package private를 지정한 것으로 간주되어 같은 패키지에 속하는 클래스로부터만 호출이 가능

좋은 웹페이지 즐겨찾기