인스턴스 변수 란 무엇입니까?
인스턴스 변수는 객체 지향 프로그래밍에서 데이터가 상주하는 모든 객체에 대해 고유 한 값을 갖는 데이터입니다. 인스턴스 변수는 인스턴스 멤버, 비 정적 필드 및 데이터 멤버라고도합니다. 객체는 계산에 사용하는 특정 데이터 조각을 보유하는 대부분의 객체에서 중요한 부분입니다.
예를 들어, 개체 A에 "blah"라는 인스턴스 변수가 있고 개체 B에 "blah"라는 인스턴스 변수가있는 두 개의 개체 A와 B가있는 경우 두 "blah"변수는 별개의 엔터티입니다. 각 변수는이를 캡슐화하는 개체와 연결됩니다. 개체 A와 관련된 변수 "blah"의 전체 이름은 "A.blah"이고 개체 B와 관련된 변수 "blah"의 전체 이름은 "B.blah"입니다. 이러한 변수가 고유 한 값을 가질 수있는 경우 각각. 객체 A와 B가 동일한 유형이고 해당 유형의 다른 객체 C가 생성되고 객체 C에도 고유 변수 값을 가질 수있는 인스턴스 변수 "blah"가 있습니다.
인스턴스 변수는 종종 정적 변수와 혼동되지만 두 변수는 크게 다릅니다. 특정 유형의 모든 객체에 고유 한 인스턴스 변수가있는 인스턴스 변수와 달리 정적 변수는 하나의 값만 가지며이 값은 해당 유형의 모든 객체에 대해 동일합니다. 정적 변수는 클래스 변수라고도하며 인스턴스 변수와 다릅니다.
할당 된 가시성 속성에 따라 인스턴스 변수는 특정 객체, 객체 및 해당 서브 클래스 또는 해당 객체가 상주하는 객체 및 다른 객체에서만 볼 수 있습니다. 퍼블릭 가시성이라는 최종 가시성 유형은 종종 객체 지향 프로그래밍에서 캡슐화 원칙을 위반하기 쉽기 때문에 인스턴스 변수에 대한 나쁜 관행으로 간주됩니다. 이 금기에도 불구하고 퍼블릭 인스턴스 변수가 유용한 경우가 있습니다. 예를 들어, Java의 많은 표준 클래스에는 퍼블릭 인스턴스 변수가있어 때로는 속성을 쉽게 수정할 수 있습니다.
인스턴스 변수의 가시성도 상속과 관련이 있습니다. 한 클래스가 다른 클래스를 상속하면 두 클래스 모두 서로의 인스턴스 변수에 즉시 액세스 할 수 없습니다. 수퍼 클래스 및 서브 클래스의 개인용 인스턴스 변수는 해당 클래스로만 제한되므로 서브 클래스의 개인용 변수는 수퍼 클래스에서 볼 수 없으며 그 반대도 마찬가지입니다. 수퍼 클래스와 서브 클래스 둘 다 볼 수있는 유일한 인스턴스 변수는 수퍼 클래스의 보호 된 변수입니다.