자바 키워드 final

4836 단어 Java키워드final
흔히 볼 수 있 는 문제
  • 모든 final 수식 필드 는 컴 파일 기간 상수 입 니까?
  • 프 라이 빗 이 수식 하 는 방법 이 암시 적 final 이라는 것 을 어떻게 이해 합 니까?
  • final 유형의 종 류 는 어떻게 확장 합 니까?예 를 들 어 String 은 final 형식 입 니 다.우 리 는 MyString 을 써 서 모든 String 의 방법 을 재 활용 하고 새로운 toMyString()방법 을 추가 하려 고 합 니 다.어떻게 해 야 합 니까?
  • final 방법 을 다시 실 을 수 있 습 니까?
  • 가능 합 니 다.
  • 부계 의 final 방법 은 이불 류 를 다시 쓸 수 있 습 니까?안 돼 요.
  • .
  • final 도 메 인 정렬 규칙 을 말씀 해 주 시 겠 습 니까?
  • final 의 원 리 를 말 해 볼 까요?
  • 사용 final 의 제한 조건 과 한계 성?
  • 2.final 수식 류
    어떤 종류의 전체 가 final 이 라 고 정의 할 때,당신 은 이 종 류 를 계승 할 계획 이 없고,다른 사람 이 이렇게 하 는 것 도 허락 하지 않 는 다 는 것 을 나타 낸다.즉,이런 종 류 는 하위 클래스 가 있어 서 는 안 된다 는 것 이다.
    메모:final 클래스 의 모든 방법 은 final 입 니 다.덮어 쓸 수 없 기 때문에 final 클래스 에 final 키 워드 를 추가 하 는 것 은 의미 가 없습니다.
    3.final 수식 방법
    클래스 의 모든 private 방법 은 final 로 암시 적 으로 지정 되 어 있 으 며,private 방법 을 사용 할 수 없 기 때문에 덮어 쓸 수 없습니다.private 방법 에 final 키 워드 를 추가 할 수 있 지만 이렇게 하 는 것 은 좋 을 것 이 없다.
    
    public class Base {
        private void test() {
        }
    }
    
    public class Son extends Base{
        public void test() {
        }
        public static void main(String[] args) {
            Son son = new Son();
            Base father = son;
            //father.test();
        }
    }
      
    
    Base 와 Son 은 모두 방법 test()가 있 습 니 다.그러나 이것 은 덮어 쓰 는 것 이 아 닙 니 다.private 가 수식 하 는 방법 은 암시 적 인 final 이기 때문에 계승 할 수 없 기 때문에 덮어 쓰 는 것 은 말 할 필요 도 없습니다.Son 에서 test()방법 은 Son 의 새로운 구성원 에 불과 합 니 다.Son 이 위로 전환 하여 father 를 얻 었 지만 father.test()는 실행 할 수 없습니다.Base 의 test 방법 은 private 이기 때문에 접근 할 수 없습니다.
    4.final 방법 은 무 거 운 짐 을 실 을 수 있 습 니 다.
    우 리 는 아버지 류 의 final 방법 이 자식 류 에 의 해 다시 쓸 수 없다 는 것 을 알 고 있 습 니 다.그러면 final 방법 은 다시 실 릴 수 있 습 니까?답 은 가능 합 니 다.아래 코드 는 정확 합 니 다.
    
    public class FinalExampleParent {
        public final void test() {
        }
    
        public final void test(String str) {
        }
    }
    수식 매개 변수
    자바 는 매개 변수 목록 에서 매개 변 수 를 final 로 표시 할 수 있 습 니 다.이 는 매개 변수 참조 가 가리 키 는 대상 을 방법 에서 변경 할 수 없습니다.이 기능 은 주로 익명 내부 클래스 에 데 이 터 를 전달 하 는 데 쓰 인 다.
    수식 변수
    
    public class Test {
        //     
        final int i = 1;
        final static int J = 1;
        final int[] a = {1,2,3,4};
        //      
        Random r = new Random();
        final int k = r.nextInt();
    
        public static void main(String[] args) {
    
        }
    }
    
    
    k 의 값 은 난수 대상 에 의 해 결정 되 기 때문에 모든 final 수식 필드 가 컴 파일 기간 상수 가 아 닙 니 다.다만 k 의 값 은 초기 화 된 후에 변경 할 수 없습니다.
    6.static final
    static 이자 final 필드 는 변경 할 수 없 는 저장 공간 만 차지 합 니 다.정의 할 때 값 을 부여 해 야 합 니 다.그렇지 않 으 면 컴 파일 러 가 통과 하지 않 습 니 다.
    
    public class finaltest
    {
        //Random  r
        static Random r = new Random();
        //     k
        final int k = r.nextInt(10);
        //     k2
        static final int k2 = r.nextInt(10);
        
        public static void main(String[] args) {
            
            finaltest t1 = new finaltest();
            
            System.out.println("k="+t1.k+" k2="+t1.k2);
            
            finaltest t2 = new finaltest();
            
            System.out.println("k="+t2.k+" k2="+t2.k2);
        }
    }
      
    
    k=2 k2=7
    k=8 k2=7
    우 리 는 서로 다른 대상 k 에 대한 값 이 다르다 는 것 을 알 수 있 지만 k2 의 값 은 같다.이것 은 왜 일 까?static 키워드 가 수식 하 는 필드 는 하나의 대상 이 아니 라 이 클래스 에 속 하기 때문이다.static final 이 수식 하 는 필드 는 메모리 의 한 공간 만 차지 하고 초기 화 되면 변경 되 지 않 는 다 고 간단하게 이해 할 수 있 습 니 다.
    블랙 파이 널
    자바 에 서 는 공백 final 을 만 들 수 있 습 니 다.즉,final 로 밝 혀 졌 지만 정 해진 필드 가 없 지만 이 필드 가 사용 되 기 전에 할당 되 어야 합 니 다.이것 은 우리 에 게 두 가지 선택 을 해 줍 니 다.
  • 정의 에서 할당(공백 final 이 아 닙 니 다)
  • 구조 기 에서 값 을 부여 하여 이 값 이 사용 되 기 전에 값 을 부여 하도록 보장 합 니 다.
  • 이것 은 final 의 유연성 을 증강 시 켰 다.
    
    final int i1 = 1;
    
        final int i2;//  final
    
        public finaltest() {
            i2 = 1;
        }
        public finaltest(int x) {
            this.i2 = x;
        }
    
    i2 의 할당 이 더욱 유연 한 것 을 볼 수 있 습 니 다.그러나 필드 가 static 과 final 로 수식 되면 정의 에 만 값 을 부여 할 수 있 습 니 다.이 필드 는 대상 에 속 하지 않 고 이 클래스 에 속 하기 때 문 입 니 다.
    8.final 도 메 인 정렬 규칙
    위 에서 우리 가 말 한 final 사용 은 자바 의 기본 적 인 차원 에 속 해 야 한다.이런 것들 을 이해 한 후에 우 리 는 정말 final 을 파악 한 것 이 라 고 할 수 있 습 니까?final 이 다 중 스 레 드 에서 동시에 발생 하 는 상황 을 고려 해 본 적 이 있 습 니까?자바 메모리 모델 에서 우 리 는 자바 메모리 모델 이 프로세서 와 컴 파일 러 바 텀 이 그들의 가장 큰 장점 을 발휘 할 수 있 도록 바 텀 에 대한 제약 이 매우 적다 는 것 을 알 고 있다.즉,바 텀 에 있어 자바 메모리 모델 은 약 한 메모리 데이터 모델 이다.이 동시에 프로세서 와 컴 파일 은 성능 최 적 화 를 위해 명령 시퀀스 에 컴 파일 러 와 프로세서 가 정렬 됩 니 다.그렇다면 다 중 스 레 드 상황 에서 final 은 어떤 재 정렬 을 할 것 인가?스 레 드 안전 에 문제 가 생 길 수 있 습 니까?다음은 final 의 정렬 을 살 펴 보 겠 습 니 다.
    자바 키워드 final 에 대한 자세 한 설명 은 여기까지 입 니 다.자바 키워드 final 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기