on
JAVA_정적 제한자 (Static)
JAVA_정적 제한자 (Static)
사용제한자(Usage Level modifier)
Static
- static변수는 객체간 값의 공유를 의미
- static멤버는 객체 생성 없이 클래스명.이름 으로 참조 가능
- static메서드는 같은 static멤버만 참조가능.
1.정적제한자 특징
- static제한자는 변수, 메서드에 적용되는 자바의 키워드
- static메서드나 변수는 해당 클래스 객체 없이도 참조가능.
- static블록(Static 메서드, 정적 초기화) 안에는 static변수만 사용해야하고, static메서드만 호출가능.
- static제한자는 지정된 변수와 메서드를 객체와 무관하게 만들어주어 this를 가질 수 없음.
- static메서드는 non-static메서드로 재정의(Overriding) 될 수 없음.
- 대표적인 static메서드는 애플리케이션의 main()메서드임.
2. 정적메서드(Static method)
- static메서드는 static변수와 마찬가지로 해당 클래스의 객체 생성 없이도 참조 가능하게 해줌.
- static메서드에서 멤버 참조할 때 주의사항 "static메서드 안에서 non-static멤버를 객체 생성없이 직접 참조할 수 없음"
▶일반멤버변수 & static 멤버변수 선언
public class Count{ public int a; // 일반변수 선언 public static int b; // static멤버 변수 //static이 붙으면 객체 사이 동일한값 갖음. }
public class MainClass{ public static void main(String[] args){ //대표적인 static메서드 Count c1 = new Count(); //첫번째 c1 메소드 생성 c1.a++; c1.b++; System.out.println("c1의 a:" + c1.a); System.out.println("c1의 b:" + c1.b); //c1.a & c1.b 모두 1출력 Count c2 = new Count(); //두번째 c2 메소드 생성 c2.a++; c2.b++; System.out.println("c2의 a:" + c2.a); // 1 System.out.println("c2의 b:" + c2.b); // 2 //b는 static변수이기 때문에 //새로운 메소드의 b여도 값이 초기화 되지안고 이전의 값을가지고 있음. //따라서 c1.b의 b가 1의 값을 가지고 있었기 때문에 c2.b++은 2가됨. } }
▶ 일반메서드 & static메서드 선언
▶ static활용
from http://shinny.tistory.com/31 by ccl(A) rewrite - 2021-09-12 21:27:09