2014-04-11 3 views
-4

제가 이해하는 한, 개인적인 방법과 최종 방법은 같습니다. Java 컴파일러는 컴파일 타임에 개인 메소드의 의미를 결정합니다. 개인 메소드 나 최종 메소드는 런타임에 수정할 수 없으며 어느 메소드도 대체 할 수 없습니다. 이러한 유사점은 개인적으로 보이게하고 최종 방법은 동일합니다. 사실입니까?우리는 개인적인 방법을 사용할 수 있으며 최종 방법은 동일합니다

+0

http://www.coderanch.com/t/404696/jifa-java/Difference-Private-Final – AntonH

+0

투표를 포기하지 마세요 .. 제발 둘 다 동일하지 않습니까? – Mdhar9e

+1

아니요, 그들은 같지 않습니다. 내가 제공 한 링크는 설명 할 수있는 구체적인 예를 제공합니다. – AntonH

답변

2

개인 방법은 자동으로 최종 파생 클래스에서 숨겨져 있습니다. 최종 클래스는 파생 클래스에서 숨겨지지 않습니다. 따라서 당신은 개인 방법 등

class test { 
    private void works { 
    } 
} 
class tester extends test { 
    private void works { 
    } 
} 

와 같은 이름으로 새 클래스를 만들 수 있지만 마지막 방법

/*----------Doesn't Work------------*/ 
class test { 
    final void dWorks { 
    } 
} 
class tester extends test { 
    final void dWorks { 
    } 
} 

예와 같은 이름으로 새 클래스를 만들고 여기에 대답 할 수 : http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ309_006.htm

2

는 다음과 같은 예를 생각해보십시오 :이 foo() 방법을 가지고 아무 문제가 없습니다

class Super { 

    private void foo(){} 

    final void bar(){} 

} 

class Sub extends Super { 

    private void foo(){} 

    final void bar(){} 

} 

을하지만, bar() 방법을 컴파일하려고 할 때 컴파일 문제를 얻을 것이다. bar() 메서드를 재정의 할 수 없기 때문에 foo() 메서드는 표시되지 않으므로 재정의가 발생하지 않습니다.

당신은 여기에서 더 답변을 볼 수 Overriding private methods in Java