-
static변수와 메서드 +싱글톤패턴JAVA 2022. 6. 14. 13:27
static변수는 여러 인스턴스에서 공통으로 사용하는 변수를 뜻한다.
인스턴스 A , 인스턴스 B , 인스턴스 C가 static변수를 기준값으로 사용한다.
예를 들면, 학생마다 새로운 학번을 생성하거나, 카드발급시에 카드 번호를 부여하거나 등등의 사례가 있다.
클래스 변수, 정적 변수라하며,
static int serialNum
위처럼 선언한다.
public static int serialNum = 1000;
이렇게 선언해주고, main을 넣은 test클래스에
Student studentLee = new Student(); studentLee.serialNum++; Student studentKim = new Student(); studentKim.serialNum--;
이렇게 생성된 인스턴스마다 serialNum을 쓸 수 있게 한다. 그리고 serialNum 을 찍어보면 1000이 된다. 값을 공유하기에
+1 했다가 -1하게 된다.
그리고 인스턴스에 쓰지 않아도 클래스에 참조해서 사용할 수 있다.
Student.serialNum
그리고,
public static int getSerialNum() { return serialNum; }
이렇게 static메소드를 만들 수 있다.
그리고, 이런 static메소드 안에선 인스턴스 변수를 사용할 수 없다.
마지막으로 싱글톤 패턴을 알아보자.
싱글톤 패턴이란 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우에 사용하는 디자인 패턴이다. 이 패턴은
static변수, 메소드를 활용해서 만들 수 있다.
예를 들면, 회사에서 회사는 하나로 유일한데 안에 있는 사원은 여러명이 된다. 그럴 경우,
public class Company { private static Company instance = new Company(); private Company() { } //외부에서 쓰게하기 public static Company getInstance() { return instance; } }
생성자는 외부에서 호출하지 못하게 private으로 지정해줬다.
이렇게 짜면, Company객체의 인스턴스가 클래스 내부에서 하나만 생성됐으며,
외부에서 getInstance를 쓸 때, static을 안썼으면 인스턴스를 생성하고 써야하기에, static을 써서 인스턴스를 생성안해도 쓸 수 있게 한다. test파일을 만들어보면,
public class CompanyTest { public static void main(String[] args) { Company company = Company.getInstance(); } }
이렇게 써서 test파일에선 인스턴스를 만들지않고, 사용가능하다.
이런게 싱글톤 패턴이다.
싱글톤 패턴을 쓰면 메모리 측면에서 낭비를 하지 않을 수 있으며, 속도 측면에서도 이점이 있다.
'JAVA' 카테고리의 다른 글
this (0) 2022.06.13 접근 제어 지시자, 정보은닉, 캡슐화 (0) 2022.06.13 참조 자료형 변수 (0) 2022.05.23 함수와 메서드(인스턴스, 생성자) (0) 2022.05.18 객체와 객체지향이란? (0) 2022.05.16