ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] final
    자바 2022. 8. 5. 11:36
    728x90

    final

    추상과는 다르게 변경 및 상속이 불가능하다.

     

     

    1. field 안에서 final 사용법 ( 값의 변경이 불가능 )
    class Cal {
        static final double PI = 3.14;
        int left, right;
        
        public void setOprands(int left, int right) {
            this.left = left;
            this.right = right;
            Cal.PI = 6; // error
        }
        
        /* ... */ sum, avg() 메소드
    }
    
    public class CaleDemo {
        public static void main(String[] args) {
            Cal c = new Cal();
            Cal.PI = 6; // error
        }
    }
    
    2. 메소드에서 final -> 오버라이딩이 되지 않는다
    class A {
        final void b() {}
    }
    
    class B extends A {
        void b() {} // error
    }
    
    3. 클래스 final  -> 상속 불가능
    final class A {
        final void b() {}
    }
    
    class B extends A {} // error

     

     

    또 다른 예시

    final class Final { // 조상이 될 수 없는 클래스 
        final int MAX_SIZE = 200; // 상수 ( 멤버변수 )
        
        final void getMaxSize() { // 오버라이딩을 할 수없는 메서드
            final int LV = MAX_SIZE; // 상수( 지역변수 )
            return MAX_SIZE;
        }
    }

     

    final이 붙은 벼수는 일반적으로 선언과 동시에 초기화 하지만, 인스턴스벼수는 생성자에게 초기화 되도록 할 수 있다.

    class Card {
        final int NUMBRE;
        final String KIND;
        static int w = 100;
        static int h = 100;
        
        Card(String kind, int num) {
        // 이 부분이 생성자에 의해서 final이 붙은 변수를 초기화 하는 것이다.
            KIND = kind;
            NUMBER = num;
        }
        
        Card() {
            this KIND + " " + NUMBER;
        }
        
        public String toString() {
        	return KIND + " " + NUMBER;
        }
    }
    
    class FinalCard {
        public static void main(String[] args) {
            Card c = new Card("HEART", 10);
            c.NUMBER = 5; // 에러, cannot assign a value to final variable NUMBER
            System.out.println(c.KIND); // 이렇게 해야함
        }
    }

    '자바' 카테고리의 다른 글

    [자바] 다형성  (0) 2022.08.06
    [자바] 인터페이스  (0) 2022.08.05
    [자바] abstract 추상  (0) 2022.08.05
    [자바] 접근제어자  (0) 2022.08.05
    [자바] API와 API문서 보는 방법  (0) 2022.08.05
Designed by Tistory.