면접문제-abstract의method는static일 수 있습니까? 동시에native일 수 있습니까? 동시에synchronized일 수 있습니까?
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가 무엇인지 확정할 수 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.