면접문제-abstract의method는static일 수 있습니까? 동시에native일 수 있습니까? 동시에synchronized일 수 있습니까?

977 단어
안드로이드 프로그래머 면접보전
abstract의method는static가 될 수 없습니다. 추상적인 방법은 이불류로 이루어져야 하기 때문에static는 자류와 관련이 없습니다!
이 방법은 이 방법은 다른 플랫폼에 의존하는 프로그래밍 언어로 이루어져야 하며 이불류의 실현 문제가 존재하지 않기 때문에 추상적일 수도 없고 abstract와 혼용할 수도 없다는 것을 나타낸다.예를 들어 File Output Steam 클래스는 하드웨어와 접촉해야 한다. 하부의 실현은 운영체제와api를 사용한다. 예를 들어 윈도우즈에서 c 언어로 이루어진 것이기 때문에 jdk의 원본 코드를 보면 File Output Stream의 오픈 방법의 정의는 다음과 같다.
private native void open(String name) throws FileNotFoundException;

만약에 우리가 자바로 다른 사람이 쓴 c 언어 함수를 호출하려고 한다면 우리는 직접 호출할 수 없다. 우리는 자바의 요구에 따라 c 언어의 함수를 쓰고 우리의 이 c 언어 함수로 다른 사람의 c 언어 함수를 호출해야 한다.우리의 c언어 함수는 자바의 요구에 따라 작성된 것이기 때문에 우리의 c언어 함수는 자바와 연결될 수 있다. 자바 쪽의 연결 방식은 바로 우리의 c함수와 대응하는 방법을 정의하는 것이다. 자바에 대응하는 방법은 구체적인 코드를 쓸 필요가 없지만 앞에서 native를 설명해야 한다.
synchronized와 abstract의 합용에 관한 문제도 안 된다고 생각합니다. 왜냐하면 제가 몇 년 동안 공부하고 개발한 과정에서 이런 상황을 본 적이 없기 때문입니다. 그리고synchronized는 구체적인 방법에 작용해야 의미가 있다고 생각합니다.그리고 방법상의 synchronized 동기화에 사용되는 동기화 자물쇠의 대상은this이고 추상적인 방법에서this가 무엇인지 확정할 수 없다.

좋은 웹페이지 즐겨찾기