본문 바로가기
개발 관련 지식/JAVA

정적 멤버와 static

by 권태일1147 2020. 4. 8.

static은 '고정된' 이라는 의미를 갖고 있다. 정적 멤버는 클래스에 고정된 필드와 메소드를 의미한다. 

정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 객체를 생성하지 않고 클래스를 통해서 호출한다.

정적 멤버는 static을 붙여주면 된다.

 

인스턴스 멤버로 사용할 것인지 정적 멤버로 사용할 것인지. 판단 기준은 객체 마다 가지고 있어야 할 데이터라면 인스턴스 멤버로, 객체 마다 가지고 있을 필요가 없으면 정적 멤버로 선언하는 것이 좋다. 즉, 변하지 않는 공용적인 데이터는 정적 멤버로 선언하는 것이 좋다.

근데 정적 멤버를 객체를 생성해서 객체 참조 변수로 호출하는 것도 가능하긴 하다. 다만 경고 표시가 나타난다.

 

// Calculator.java

public class Calculator {
    static double pi = 3.14159; // 모든 객체에 공통적으로 사용되는 필드
    
    static int plus(int x, int y) { // 모든 객체에 공통적으로 사용할 메소드
        return x + y;
    }
    
    static int minus(int x, int y) {
        return x - y;
    }
}

 

// Main.java

public class Main {
    public static void main(String[] args) {
        double result1 = 10 * 10 * Calculator.pi;
        int result2 = Calculator.plus(10, 5);
        int result3 = Calculator.minux(10, 5);
        
        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
    }
}

'개발 관련 지식 > JAVA' 카테고리의 다른 글

Java 환경변수 설정이 필요한 이유  (2) 2020.06.14
익명 객체  (0) 2020.04.08
인스턴스 멤버와 this  (0) 2020.04.08
람다식 메소드 참조  (0) 2020.04.07
람다식에서 클래스 멤버와 로컬 변수 사용  (0) 2020.04.07