1 ) 게임 결과 저장 Display 만들기
- Lv_3 기능 구현.
- 처음 생각. display 클래스를 만들어서 기능 구현.
- playNum 이라는 게임 진행 횟수 변수를 list에 저장 후.
- list를 반복문(for)을 통해 게임 기록 보기 구현
- 문제 발생.
- 하나의 클래스에 리스트 저장과 게임 기록 보기를 모두 넣으니 원하는대로 구현이 안됌
- list의 데이터들이 날아가는 현상 발생
- list에 저장 후 main 클래스에서 새로 불러오니 데이터가 날아감.
- 게임 횟수 변수를 따로 가져오는 방법을 몰색
- 결국 list를 저장하는 class를 따로 만들고, list 저장한 것을 보여주는 class 따로 구현.
- sava에는 게임 기록 횟수들을 저장하고, view는 실행 시 반복문을 실행하여 게임 기록 보기를 실행.
public class BaseballResultSave {
static ArrayList<Integer> list = new ArrayList<>();
public static void baseballResultSave(int input) {
list.add(input);
}
public static ArrayList<Integer> getList() {
return list;
}
}
- static 정적 변수를 사용하여 list 객체를 생성해도 데이터가 변하지 않게 설정.
public class BaseballResultView {
public void baseballResultView() {
ArrayList<Integer> list = BaseballResultSave.getList();
System.out.println("==========================");
System.out.println("< 게임 기록 보기 >");
for(int i = 0; i<list.size(); i++){
System.out.println((i + 1) +" 번째 게임 : 진행 횟수 - " + list.get(i));
}
System.out.println("==========================");
}
}
- new 로 새로운 객체를 생성하면 데이터가 날아가기 때문에 정적 변수 static을 이용해서 데이터를 그대로 불러오기.
2 ) 정적 메소드란?
- 인스턴스 생성 없이 호출이 가능하다. (인스턴스 생성 후 호출도 가능하지만 지양하고 있다.)
- 클래스가 메모리로 올라갈 때 정적 메소드를 자동으로 생성된다.
- 그렇기에 인스턴스를 생성하지 않고 클래스만으로 메소드 호출 가능.
public class Tset {
public static void sm() {
System.out.printlf("정적 메소드 입니다.");
}
public void m() {
System.out.println("메소드 입니다.");
}
}
public class Main() {
public static void main(String[] args) {
Test.sm(); // O
Test.m(); // X
Test test = new Test();
test.sm(); // X
test.m(); // O
}
}
- 유틸리티 관련 함수를 만드는데 유용하게 사용된다.
- 정적 메서드를 사용하는 기준?
- 인스턴스를 생성하지 않고 호출할 것 인가? --> 그렇다
- 정적 메서드 특징?
- 변화를 가정하지 않는다.
- 메소드가 인스턴수 변수를 사용하지 않는다.
- 인스턴스 생성에 의존하지 않는다.
- 메서드가 공유되고 있다면, 정적 메서드로 호출할 수 있다.
- 메서드가 변화하지 않고 오버라이딩 되지 않는다.
'TIL > Java' 카테고리의 다른 글
TIL 2024-10-18 (Java 종합만 문법) (0) | 2024.10.18 |
---|---|
TIL 2024-10-16 (Java 종합만 문법) (2) | 2024.10.16 |
TIL 2024-10-15 (Java 문법 종합반) (2) | 2024.10.15 |
TIL 2024-10-14 (Java 문법 종합반) (2) | 2024.10.14 |
TIL 2024-10-11 (Java 문법 종합반) (0) | 2024.10.11 |