2010-01-22 11 views
2

Java 작성자가 Java 클래스에 "class"라는 이름을 사용한 이유는 무엇입니까? 이 용어의 출처는 무엇입니까?왜 Java 클래스의 "클래스"입니까?

+1

당신의 이름은 무엇입니까? –

+3

그들은 왜 클래스에게 이름 클래스를 주었습니까 ???? 여기서 뭐가 문제 야? –

+5

왜 많은 사람들이이 질문에 그런 문제가 있는지 나는 알지 못합니다. 대답이 분명한 것 같으면 영어가 모든 사람의 모국어가 아님을 기억하십시오. – danben

답변

17

Java는 이름 클래스를 만들지 않았습니다. 이전에 C++처럼 사용되었습니다.

"클래스"라는 이름이 분류 (또는 유형) 에서처럼 객체 클래스를 참조한다고 생각합니다. 그리고 나서 객체는 그 타입의 인스턴스입니다. 여기

은 dictionary.com에서 "클래스"의 첫 번째 정의이다

  1. 이유만으로 그룹을 형성하는 것으로 간주 자나 여러 가지 공통의 특성 특성 품질, 또는 형질; 종류; 종류.

그래서 이것은 우리가 컴퓨터 과학의 클래스로 알고있는 것과 잘 일치한다 - 필드와 방법 인 "특성/품질/특성".

+4

Java는 C++ 프로그래머에게 매력적으로 고안되었습니다. 이것은 개념이 이어졌다는 것을 의미합니다. –

1

클래스는 메타 데이터의 정의입니다. 객체가 인스턴스입니다. 이것은 일반적인 OOP 언어 사용입니다.

5

"클래스"라는 단어의 기원은 사실상 컴퓨터 과학의 영역보다 앞서 있다고 생각합니다. 분류학은 오랫동안 계속되어 왔고, 나는 그 뿌리가 철학의 어딘가에 있는지, 아니면 생물학에서의 추상적이지 않은지에 대해 말하려고 노력할 것이다. 프로그래밍 언어 사람들은 다른 분야의 비유를 채택했습니다. :).

15

Ole-Johan DahlKristen Nygaard은 분명히 Simula의 개념을 시작했습니다. 그리고 또한 그들에게 영감을 준 Tony Hoare.

history of Simula에 따르면 1966 년 여름과 가을에 걸쳐 진행이 추구로

, 그들은 먼저 어떤 ALGOL 게시판에서 제시 토니 호어의 기록 클래스 구조에 포함 된 기회와 더 많은 정신이되었다 . 호아레 (Hoare)의 기록을 신중하게 검토 한 결과, 그들은 분명히 매우 유용한 여러 가지 특성을 가지고 있었지만 요구 사항을 완전히 충족시키지 못했다는 결론에 도달했다. 그들이 정말로 찾고 있던 것은 레코드 클래스 속성을 가진 일종의 일반화 된 프로세스 개념이었습니다.

접두어 아이디어가 도입 된 1966 년 12 월에 갑자기 문제의 해답이 나타났습니다. 나중에 객체라고 부르는 프로세스는 이전의 객체와 후속 객체에 대한 참조를 포함하는 접 두부 레이어와 여러 속성과 함께 해당 객체의 속성을 포함하는 주 레이어로 구성 될 수 있습니다. 이 중요한 새 기능 외에, 그들은 또한 SIMULA I의 활동 개념을 고도로 세련된 버전으로 묘사 할 수있는 클래스 개념을 도입했습니다. 이 강력한 새 개념을 사용하여 연결된 객체의 클래스 및 하위 클래스 계층을 설정할 수있었습니다.

물론 객체를 분류하는 아이디어는 프로그래밍 언어보다 우위에 있습니다.

+2

역사를 보내 주셔서 감사합니다. – GreenMatt

0

그들은 같은 성질의 대상을 "분류"하기 위해 사용되기 때문에.

직원 개체는 계정 개체와 다릅니다.

모두이 concepts are the base of Object Oriented Technology입니다. 자바는 객체 지향 프로그래밍 (Object Oriented Programming)이기 때문에 이러한 모든 용어를 우선 사용합니다.

0

Java의 Class 클래스는 투명 클래스가 아니고 순수한 사고로 가져온 클래스입니다.

다음은 두 종류가 있고 방법은 당신이 좋아하는 물건을 할 수 있도록 객체 : 즉

Class cls = java.lang.String.class; 

// By obtaining a list of all declared methods. 
Method[] methods = cls.getDeclaredMethods(); 

// By obtaining a list of all public methods, both declared and inherited. 
methods = cls.getMethods(); 
for (int i=0; i<methods.length; i++) { 
    Class returnType = methods[i].getReturnType(); 
    Class[] paramTypes = methods[i].getParameterTypes(); 
    process(methods[i]); 
} 

// By obtaining a particular Method object. 
// This example retrieves String.substring(int). 
try { 
    Method method = cls.getMethod("substring", new Class[] {int.class}); 
    process(method); 
} catch (NoSuchMethodException e) { 
} 

http://www.exampledepot.com/egs/java.lang.reflect/Methods.html

, 컴파일시에 결정 코드를 호출합니다. 선택적 기능을 호출하는 데 매우 편리합니다.

관련 문제