2010-06-16 3 views
2

이것은 이상한 질문 일지 모르지만 사실 그것은 나에게 두통을 일으켰습니다.필드의 인스턴스 란 무엇입니까?

객체 지향 프로그래밍에는 주요 개념의 이름이 허용됩니다. 우리 모델에는 클래스메서드필드이 있습니다. 이제 데이터의 세계로가는 :

  • 클래스의 인스턴스가 객체라고합니다.
  • 필드의 인스턴스는 ... 무엇이라고?

값이? 기간이 조금 넓습니까? 아닙니다. 나는 "속성"도 제공 받았지만 속성이 아니라 모델의 일부이며 데이터가 아닙니다.

(이것은, 실제로 이러한 개념을 코딩하고 순수 학문이 아닙니다.)

업데이트 : 제가 예를 보자. 나는 "나이"라는 필드가있는 "Person"클래스를 가지고 있습니다. 20 Person 인스턴스를 만들면 각각의 인스턴스를 객체라고 부릅니다. 여태까지는 그런대로 잘됐다. 하지만 Person "Igor"를 가져 와서 20 세를 설정한다고 가정 해 보겠습니다. 이제 20 번을 포함하는 저장 위치는 무엇입니까? 그것은 필드인가, 가치인가, 또는 다른 것입니까?

또 다른 갱신 : this related question에서 파벨 펠드만에서 인용 제가 위에서 설명하려고 어떤 다른 단어에 대해 설명합니다

"나는 그 클래스 기반 OOP 필드에 클래스에 속하는 말하고 싶지만하고 있지 않습니다 당신이 C# 또는 자바 클래스의 리플렉션을 볼 때 필드, 필드 타입, 이름 등을 가질 때 객체의 값을 얻을 수 있습니다. 클래스에서 필드를 한 번 선언하면 많은 값을 가질 수 있습니다. 같은 필드지만 값이 다른 개체 "

+2

"회원"이라고하는 입력란을 들었습니다. –

답변

8

필드를 인스턴스화 할 수 없습니다. 필드에는 값만 포함될 수 있습니다. 값은 원시/원시 유형이거나 오브젝트 인스턴스에 대한 참조/포인터 일 수 있습니다. 당신의 갱신으로 당


: 오브젝트가 실제 실재물를 나타내는 경우, 그것은 종종 재산라고. "실세계"란 개인/인간과 같은 것을 의미합니다. Person, Product, Order, Car 등이있다. 객체가 개인/인간을 나타내는 것이 아니라면, List, String, Map 인 경우 더 자주 필드라고합니다. 그것은 제가 지금까지 관찰 한 것입니다.

+0

예를 통해 약간의 질문을 업데이트했습니다. 필자는 필드가 인스턴스화되지 않는다는 개념에 동의하지만 클래스 정의의 일부인 필드와 개체의 저장 위치 인 필드 사이에는 차이점이 존재한다고 생각합니다. – waxwing

+0

나는 마침내 "재산"으로 갔다 - 이것은 실제로이 질문을하기 전에 동료가 제안한 것이지만 나는 그와 동의하지 않았다. 나는 아직도 내가하는 것을 확신하지 못한다. – waxwing

2

필드는 클래스의 컨텍스트 또는 개체의 컨텍스트에서 이야기하는 날씨입니다.

class C { 
    int i;  // i is a field 
} 

매개 변수인수 "인스턴스"에 "는 uninstantiated"필드에 대한 용어의 구분이없는 반대로
obj = new C(); 
obj.i = 7;  // obj.i is a field 

.

+0

내가 말하려고했던 것의 매우 명백한 예, 감사합니다! – waxwing

4

BalusC와의 일치. 그러나 당신이 묻는 것은 인스턴스화 된 객체의 필드를 호출하는 것입니다. 객체가 상태로 참조 할 수있는 상태 (데이터)와 연산 (메소드)을 모두 포함한다는 것을 기억하십시오.

0

클래스의 인스턴스는 객체이고 클래스는 다른 인스턴스화 된 객체를 가리키는 필드를 포함 할 수 있습니다 (또는 널 포인터). 필드의 인스턴스를 말하는 것은 이치에 맞지 않지만 특정 필드가 가리키는 개체에 대해 이야기 할 수도 있습니다.이 개체는 서로 다른 인스턴스에 대해 다를 수 있습니다. 또는 필드 유형 (해당 클래스가 속한 클래스)에 대해 이야기 할 수 있습니다.

0

기본적으로 클래스 (또는 객체) 인스턴스의 필드 값에 대한 이름이없는 대답은 아닙니까? "BalusC"제안 그것은 클래스의 인스턴스의 메소드가 리턴 값에 이름을 부여처럼

... 내 생각

는 "상태"어쨌든 가장 좋은 대답이다.

관련 문제