1. final

    1. 핵심 의미
      1. 한번 정해지면 변경할 수 없음
    2. 사용 대상별 의미
      1. 변수

        1. 값을 한 번만 할당할 수 있음
      2. 메서드

        1. 서브클래스에서 오버라이드 불가
      3. 클래스

        1. 상속 불가
      4. 예시

        final int MAX = 100; //변수, 값 변경 불가
        MAX = 200; //x 컴파일 오류
        
        final class Myclass{} //클래스 상속 불가
        class SubClass extends MyClass{} // x 오류
        
        class Parent{
        	final void show(){System.out.println("Hello");}
        }
        class Child extends Parent{
        	void show(){} // x 오류
        }
        
  2. static

    1. 핵심 의미

      1. 클래스 단위로 공유됨, 객체마다 달라지지 않음
    2. 사용 대상별 의미

      1. 변수
        1. 모든 객체가 공유하는 클래스 변수
      2. 메서드
        1. 객체 생성 없이 클래스 이름으로 호출 가능
      3. 중첩 클래스
        1. 바깥 클래스 인스턴스와 독립적
    3. 예시

      class MyClass{
      	static int count = 0; //모든 객체 공유lass MyClass{	static int count = 0; //모든 객체 공유
      	
      	static void printCount(){
      		System.out.println("count = " + count);
      	}
      }
      
      MyClass.count =5 ; //객체 없이 접근 가능
      MyClass.printCount(); // 객체 없이 호출 가능
      
  3. 같이쓰는 경우

    1. static final → 클래스 상수
    2. 객체마다 값이 아니라 클래스 단위로 한 번만 할당되는 값
    class Contants{
    
    	static final double PI = 3.14159;
    } 
    System.out.println(Constants.PI);