근육 트레이닝 사랑하는 문계 여학생 자바 입문_정적 멤버

소개



친구와 이야기하는 것은 정말 즐겁습니다 ~
오늘, 3개월 만에 대학의 친구와 이야기해, 대학 4년간 더 사이 좋은 친구와 이야기해 두면 좋았다라고 일순간 생각해 버렸습니다・・・. 웃음
나마다입니다만, 친구와 노는 것은 해에 2·3회 정도이기 때문에. . . www

그럼, 이번은 정적 멤버에 이어요.
독학으로하고 있기 때문에, 「이것은 Java 해 나갈 때 유용한 지식이다!

클래스의 필드



new에 의해 생성되는 각 인스턴스는, 기본적으로 독립한 존재이다 (인스턴스의 독립성이라고 한다)
마지막으로, MuscleBoy 인스턴스가 가진 필드 hp에는 각각 다른 값을 넣을 수 있습니다!
1 public class Main{
2  public static void main(String[] args){
3     MuscleBoy mb1 = new MuscleBoy();
4     mb1.hp = 100;
5     MuscleBoy mb2 = new MuscleBoy();
6     mb2.hp = 70;
7     }
8 }

동일한 MuscleBoy 클래스에서 인스턴스가 생성되었지만 각각 다른 hp 값을 가질 수 있습니다.

그럼 여기에서 이번 주제입니다!
예를 들어, 4 명의 근육 남자가 팀을 구성하고 Best Body Japan 대회에 참가할 때까지 스토리 게임을 만드는 경우를 생각해 봅시다.
다음과 같은 클래스에서 생성되는 인스턴스에서는 각각 이름, HP, 돈 필드를 따로 가지고 있다.
1 public class MuscleBoy{
2   int hp;
3   String name;
4   int money;
5 }

그러나, 프로그램을 개발하고 있으면 「각 인스턴스에서 공유하고 싶은 정보」가 나온다.
이 게임은 팀을 짜고 행동하고 있기 때문에, 팀 전원의 돈을 1개에 정리하고 싶다! ! 라고 하는 설정을 하고 싶은 경우도 있을지도 모른다.

같은 클래스에서 생성된 인스턴스에서 필드를 공유하려는 경우,
필드 선언의 시작 부분에 정적 추가
1 public class MuscleBoy{
2  int hp;
3  String name;
4  static int money;           //静的フィールド
5 }

static을 지정한 필드는 정적 필드라고 합니다!
성적이 아니다

정적 필드



1. 필드 변수의 실체가 클래스에 배치된다
일반적으로 필드가 저장되는 상자 (영역)는 개별 인스턴스마다 준비되지만 정적 필드의 상자는 인스턴스가 아닌 클래스에 대해 하나만 준비됩니다.

【정적 필드에의 액세스 방법】
클래스 이름. 정적 필드 이름
1 public class Main{
2  public static void main(String[] args){
3    MuscleBoy mb1 = new MuscleBoy();
4    MuscleBoy mb2 = new MuscleBoy();
5    System.out.println(mb1.name);
6    System.out.println(MuscleBoy.money);  
7  }
8 }

2. 모든 인스턴스에 상자의 분신이 놓여진다
mb1이나 mb2 등 각 인스턴스에도 money라는 이름으로 "상자의 분신"을 사용할 수있다.
"mb1.money", "mb2.money"라는 분신 상자에 값을 할당하면 Muscle.money에 값이 할당됩니다.
1 public class Main{
2  public static void main(String[] args){
3    MuscleBoy mb1 = new MuscleBoy();
4    MuscleBoy mb2 = new MuscleBoy();
5    MuscleBoy.money = 1000;
6    System.out.println(MuscleBoy.money);  //1000と表示
7    System.out.println(mb1.money);   //1000と表示
8    mb1.money = 2000;         //mb1に2000を代入
9    System.out.println(mb2.money);  //mb2.moneyでも2000と表示
10  }
11 }

3. 인스턴스를 하나 낳지 않아도 이용 가능!

1 public class Main{
2  public static void main(String[] args){
3    //1人も筋肉ボーイを生み出していない状況
4    MuscleBoy.money = 1000;
5    System.out.println(MuscleBoy.money);
6 }
7}

정적 방법



MuscleBoy 클래스에 "근육 소년 소지금을 무작위로 설정"setRandomMoney () 메서드를 추가해보십시오.
1 public class MuscleBoy{
2  int hp;
3  String name;
4  static int money;
5
6  static void setRandomMoney(){       //staticをつけたメソッド
7    MuscleBoy.money = (int) (Math.random() * 1000);
8   }
9 }

static가 붙어있는 메소드는 정적 메소드 또는 클래스 메소드라고 불리며 정적 필드와 함께 정적 멤버로 총칭됩니다.

1. 메소드 자체가 클래스에 속한다.
【정적 메소드가 불려 가는 방법 1】

클래스 이름, 메소드 이름 ();

2. 즉석에 방법의 분신이 놓여진다
【정적 메소드가 호출되는 방법 2】

인스턴스 변수. 메소드 이름 ();

3. 인스턴스를 하나도 생성하지 않아도 호출할 수 있다
1 public class Main{
2   public static void main(String[] args){
3    MuscleBoy.setRandomMoney();
4    System.out.println(MuscleBoy.money);   //ランダムな金額が表示される
5    MuscleBoy mb1 = new MuscleBoy();
6    System.out.println(mb1.money);     //同じ金額を表示
7   }
8 }

좋은 웹페이지 즐겨찾기