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