검수요청.png검수요청.png

멤버

위키원
이동: 둘러보기, 검색

멤버(member)란 객체 지향 프로그래밍(OOP)에서 하나의 클래스를 구성하는 개별적인 구성 요소를 말한다. 클래스의 멤버에 변수(Variable)와 메소드(Method) 및 다른 클래스(Class)가 있다. 하나의 클래스는 다른 클래스를 자신의 멤버로 포함(Composite)할 수 있다. 이 때 다른 클래스에 포함되는 작은 클래스를 내부 클래스(Inner Class)라고 하고, 다른 클래스를 포함하는 큰 클래스를 외부 클래스(Outer Class)라고 한다.

개요[편집]

맴버(member)는 영어로 구성원이라는 뜻이다. 객체에서의 맴버는 변수와 메소드가 있다.[1]

객체 지향 프로그래밍에서 멤버 변수(member variable) 또는 멤버 필드는 특정 객체와 연결된 변수의 하나이며, 해당 변수의 모든 메소드(멤버 함수)에 접근이 가능하다. 클래스 기반 언어에서 이들은 두 종류로 구별된다: 모든 인스턴스의 클래스와 공유되는 변수의 사본이 하나만 있을 경우 이를 클래스 변수나 정적 멤버 변수로 부른다. 클래스의 각 인스턴스가 자신만의 변수 복사본을 소유하고 있는 경우 해당 변수는 인스턴스 변수라 부른다.[2]

특징[편집]

맴버 변수[편집]

변수를 선언위치에 따라 맴버변수와 지역변수로 크게 구분지을 수 있다.

맴버변수는 선언위치가 '클래스 영역'이고, 지역변수의 선언위치는'메소드나 생성자 내부'이다. 여기에서 맴버변수는 또 두가지로 나뉘는데, 클래스 변수와 인스턴스 변수로 나뉘어 진다. 이 둘은 같은 맴버변수에 속하지만 필요한 상황이 굉장히 다르다.[3]

클래스 변수[편집]

클래스 변수란 클래스 내에서 static을 붙여서 선언하는 변수를 말한다. 클래스 변수는 한번 선언되면 해당 클래스의 모든 인스턴스가 같은 저장공간을 가리킨다. 또한 전역변수라고 부르기도 한다.

public class Webtest {
    static int sval = 123;
    public static void main(String[] srgs){
        Webtest ex1 = new Webtest();
        Webtest ex2 = new Webtest();
        System.out.println(ex1.sval);
        ex2.sval = 321;
        System.out.println(ex1.sval);
    }
}
// 실행결과
123
321

이런 결과가 나오는데 그 이유는 sval은 모든 인스턴스에서 하나의 저장공간을 공유하기 때문에 다른 인스턴스에서 변경하면 다른 인스턴스도 변경된 값을 가지게 되기 때문이다.

인스턴스 변수[편집]

인스턴스 변수는 클래스 변수와 마찬가지로 클래스 내에 선언한다. 클래스 변수와의 차이점은 인스턴스에 종속되어 인스턴스 생성시마다 새로운 저장공간을 할당한다. 즉 저장공간이 공유되지 않는다. 또한 인스턴스에 종속되기 때문에 꼭 인스턴스 객체에서 호출해 주어야 한다. 이런 점들이 클래스 변수와의 가장 큰 차이점이다.

public class Webtest{
    static int sval = 123;
    int ival = 321;
    public static void main(String[] args){
        System.out.println(sval);
        // System.out.println(ival);   *error
        
        Webtest ex1 = new Webtest();
        Webtest ex2 = new Webtest();

        ex1.ival = 456;

        System.out.println(ex1.ival);
        System.out.println(ex2.ival);
    }
} 
// 실행 결과
123
456
321

이 예제에서 주석 처리된 부분은 에러가 나는 코드이다. 인스턴스 변수인 ival은 인스턴스 없이 접근할 수 없기 때문이다. 또한 ex1과 ex2의 출력 차이를 통해 저장공간이 공유되지 않음을 알 수 있다.[4]

맴버 메소드[편집]

  • C언어의 함수와 비슷하다.
  • 데이터 처리 기능을 구현한다.
  • 리턴값이 없는 메소드는 void 형을 지정한다.
  • 메소드가 받는 인수의 데이터 타입은 메소드를 호출하는 쪽과 일치해야 한다.
  • Method Overloading(중복 정의), Overriding(재정의)기술로 확장된다.
  • 메소드가 리턴하는 값과 리턴되는 값의 데이터 타입은 일치해야 한다.

각주[편집]

  1. <클래스 맴버와 인스턴스 맴버><<공동공부>>,2013-12-04
  2. <맴버변수><<위키백과>>,2017-07-10
  3. <맴버변수 지역변수 전역변수><<쉽고 친절한 프로그래밍>>,2017-04-30
  4. <맴버변수 : 클래스변수, 인스턴스변수><<무무위키>>,2016-08-03

참고 자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 멤버 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.