티스토리 뷰

개발/Java

정적 멤버와 static

욱스다 2022. 9. 4. 16:38

 

*정적 (static) 멤버

- 클래스에 고정된 멤버로서 객체 생성하지 않고 사용할 수 있는 필드와 메소드

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};
}
 
double result1 = 10 * 10 * Calculator.pi;
int result2 = Calculator.plus(10,5);
int result3 = Calculator.minus(10,5);
// Calculator.멤버네임(pi,plus,minus를 써서 사용가능)
 

*인스턴스 멤버와 정적 멤버 사용 기준

- 객체마다 다를 수 있는 필드값은 인스턴스 필드

- 객체마다 다를 필요가 없는 필드값은 정적 필드로 선언

public class Calculator{
   String color; // 계산기 별로 색상이 다를 수 있음
   static double pi = 3.14159; // 계산기에서 사용되는 파이값은 동일함
}
// 그렇기 때문에 항상 동일하냐 동일하지않냐에 따라 사용기준을 정하면된다.
 

*정적 메소드 선언 시 주의할점

- 정적 메소드 선언 시 그 내부에 인스턴트 필드 및 메소드 사용 불가

- 정적 메소드 선언 시 그 객체 자신 참조인 this 키워드 사용 불가

public class ClassName{
   // 인스턴스 필드와 메소드
   int field1;
   void method1(){};
   
   // 정적 필드와 메소드
   static int field2;
   static void method2(){};

   //정적 메소드
   static void method3{
   this.field1 = 10; //(x) 
   this.method1(); //(x)
   field2 = 10; //(o)
   method2(); //(o)
   }
}
 

*정적 메소드에서 인스턴스 멤버 사용하려는 경우

- 객체를 생성후 참조 변수로 접근

static void method3{
   ClassName obj = new ClassName();
   obj.field1 = 10;
   obj.method1(); //이렇게 사용해야함
}
 

 

*접근 제어자(access modifier)

:접근 제어자는 멤버 변수/함수 혹은 클래스에 사용되며 외부에서의 접근을 제한하는 역할을 함

 

1.private : 같은 클래스 내에서만 접근가능

2.default(nothing):같은 패키지 내에서 접근가능

3.protected:같은 패키지 내에서, 그리고 다른 패키지의 자손에서 접근가능

4.public:접근 제한 없음

 

'개발 > Java' 카테고리의 다른 글

List 컬렉션  (0) 2022.09.05
인스턴스 멤버와 this  (0) 2022.09.04
오버로딩, 오버라이딩  (0) 2022.09.04
생성자  (0) 2022.09.01
클래스와 인스턴스 그리고 객체  (0) 2022.09.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함