딱콩이의 봄

static & final 💡💡 본문

개발/JAVA

static & final 💡💡

코린이딱콩 2022. 8. 29. 19:16

사용자 정의 상수

✔️정적 필드에 final 키워드를 적용하여 값을 변경할 수 없도록 하는 것으로 사용자 정의 상수를 정의할 수 있습니다.

✔️사용자 정의 상수는 정적 필드나 메서드의 접근과 마찬가지로 클래스 이름을 통해 접근하여 사용합니다.

✔️사용자 정의 상수는 접근제한자의 범위에 따라 공유하는 범위가 결정됩니다.

 


static method

✔️정적 메소드는 static으로 선언된 메서드로써 인스턴스 없이(객체 생성 없이)도 호출할 수 있습니다.

  • 정적 메소드는 인스턴스 필드에는 접근할 수 없고, 정적 필드에만 접근할 수 있습니다.
  • 정적 메소드는 객체를 통해 사용될 수 있지만, 반드시 클래스명과 함께 사용하기 바랍니다.

✔️예시

class Employee {
	private static int nextId = 1;
    private int id;
    
    
    ...
    public static int getNextId() {
    	return nextId; //정적 필드의 값을 리턴합니다.
        
    }
    ...
 }

🧐정적 메소드는 언제 사용할까?

  • 객체의 상태에 접근하지 않고, 필요한 파라미터가 모두 명시적 파라미터인 경우
  • 클래스의 정적 필드에만 접근하는 경우( ex) Employee.getNextId)

static method  & instance method

public class StaticEx {
		private static String staticMessage = "Static Message";
        private String instanceMessage;
        
        public StaticEx(){
        	this.instanceMessage = "Instance Message";
        }
        
        public void showInstanceMessage(){ //인스턴스 메소드에서 스태틱 필드나 스태틱 메서드 접근이 가능하다
        	System.out.println(instanceMessage);
            System.out.println(staticMessage);
            StaticEx.showStaticMessage();
        }
        
        public static void showStaticMessage() {
        	System.out.println(staticMessage);
            System.out.println(instanceMessage); //에러
            //Non-static field 'instanceMessage' cannot referenced from a static context
         	this.showInstanceMessage(); //에러 
            //showStaticMessage 메서드는 프로그램이 시작하면서 부터 호출이 가능하기 때문에 
            //인스턴스화가 되어야지만 호출이 되는 인스턴스 메서드는 호출 불가
            
            StaticEx se = new StaticEx();
            se.showInstanceMessage();//인스턴스화 했기 때문에, 호출 가능
            StaticEx.showStaticMessage();
         }
        }

 

 

🧐Reference

https://youtu.be/yOmXcaUaD7U

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

상속 관계의 초기화 과정  (0) 2022.08.30
상속(Inheritance)  (0) 2022.08.29
static & final💡  (0) 2022.08.29
JAVA 메모리 모델  (0) 2022.08.29
this() Constructor  (0) 2022.08.29
Comments