2012-05-10 3 views

답변

58

Java 컴파일러가 클래스를 바이트 코드로 변환 할 때 먼저 부모 클래스를 찾아야합니다. 이는 클래스의 기본 구현이 관련 메서드 및 필드가 들어있는 부모 클래스의 바이트 코드를 가리키는 것이기 때문입니다. 그런 다음 하위 클래스 함수의 코드에 대한 포인터를 추가합니다.이 중 일부는 'implements'키워드로 지정됩니다.

상위 클래스는 컴파일 할 수 있어야하므로 컴파일러가 해당 클래스가 무엇인지 알면 더 쉽습니다. 또한 하나의 클래스 만 확장 할 수 있지만 인터페이스의 수에는 제한이 없습니다. extends 키워드가 임의의 수의 구현 명령 사이에서 혼합 될 수 있으면 컴파일 시간이 증가합니다. 컴파일러는 dev 시간을 줄이기 위해 최대한 빨리 실패하기 때문에이 선택은 논리적입니다. 또한 같은 이유로 클래스에 대해 명확하게 생각하는 데 도움이됩니다.

+2

+1 마침내 정상적인 답변. 고맙습니다. :) – weltraumpirat

+4

최선을 다합니다. 결국, 우리는 모두 함께! –

+2

@ NathanielFord, 우리가 정말로입니까? 나는 크게 잘못 알고있다. – jn1kk

5

아마도 컴파일러의 작업을 더 쉽게 만들 수 있습니다. 그것은 단지 대회입니다. 이러한 것들을 재 배열 할 수있는 이점이 없습니다.

Java 기능이 public int (int a, int b)add{ return a+b; }과 같이 선주문 표기법으로 쓰여지지 않은 이유를 묻는 것과 같습니다.

+0

'C'의 무엇인가. 서면으로 된 자세한 정보를 읽으면 코드가 유익합니다. –

+0

대회가 ​​아닙니다. 구문 규칙입니다. 무시할 수있는 규약은 컴파일러가 규칙을 적용합니다. –