"멤버"의 두 판 사이의 차이
잔글 (→같이 보기) |
|||
(사용자 2명의 중간 판 2개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''멤버'''란 [[객체 지향 프로그래밍]](OOP)에서 하나의 [[클래스]]를 구성하는 개별적인 구성 요소를 말한다. 클래스의 멤버에 변수(Variable)와 [[메소드]](Method) 및 다른 [[클래스]](Class)가 있다. 하나의 클래스는 다른 클래스를 자신의 멤버로 포함(Composite)할 수 있다. 이 때 다른 클래스에 포함되는 작은 클래스를 내부 클래스(Inner Class)라고 하고, 다른 클래스를 포함하는 큰 클래스를 외부 클래스(Outer Class)라고 한다. | + | '''멤버'''(member)란 [[객체 지향 프로그래밍]](OOP)에서 하나의 [[클래스]]를 구성하는 개별적인 구성 요소를 말한다. 클래스의 멤버에 변수(Variable)와 [[메소드]](Method) 및 다른 [[클래스]](Class)가 있다. 하나의 클래스는 다른 클래스를 자신의 멤버로 포함(Composite)할 수 있다. 이 때 다른 클래스에 포함되는 작은 클래스를 내부 클래스(Inner Class)라고 하고, 다른 클래스를 포함하는 큰 클래스를 외부 클래스(Outer Class)라고 한다. |
== 개요 == | == 개요 == | ||
− | 맴버(member)는 영어로 구성원이라는 | + | 맴버(member)는 영어로 구성원이라는 뜻이다. 객체에서의 맴버는 변수와 메소드가 있다.<ref name="java"><[https://opentutorials.org/module/516/5440 클래스 맴버와 인스턴스 맴버]><<공동공부>>,2013-12-04</ref> |
객체 지향 프로그래밍에서 멤버 변수(member variable) 또는 멤버 필드는 특정 객체와 연결된 변수의 하나이며, 해당 변수의 모든 메소드(멤버 함수)에 접근이 가능하다. 클래스 기반 언어에서 이들은 두 종류로 구별된다: 모든 인스턴스의 클래스와 공유되는 변수의 사본이 하나만 있을 경우 이를 클래스 변수나 정적 멤버 변수로 부른다. 클래스의 각 인스턴스가 자신만의 변수 복사본을 소유하고 있는 경우 해당 변수는 인스턴스 변수라 부른다.<ref name="위키"><[https://ko.wikipedia.org/wiki/%EB%A9%A4%EB%B2%84_%EB%B3%80%EC%88%98 맴버변수]><<위키백과>>,2017-07-10</ref> | 객체 지향 프로그래밍에서 멤버 변수(member variable) 또는 멤버 필드는 특정 객체와 연결된 변수의 하나이며, 해당 변수의 모든 메소드(멤버 함수)에 접근이 가능하다. 클래스 기반 언어에서 이들은 두 종류로 구별된다: 모든 인스턴스의 클래스와 공유되는 변수의 사본이 하나만 있을 경우 이를 클래스 변수나 정적 멤버 변수로 부른다. 클래스의 각 인스턴스가 자신만의 변수 복사본을 소유하고 있는 경우 해당 변수는 인스턴스 변수라 부른다.<ref name="위키"><[https://ko.wikipedia.org/wiki/%EB%A9%A4%EB%B2%84_%EB%B3%80%EC%88%98 맴버변수]><<위키백과>>,2017-07-10</ref> | ||
77번째 줄: | 77번째 줄: | ||
* <[https://opentutorials.org/module/516/5440 클래스 맴버와 인스턴스 맴버]><<공동공부>>,2013-12-04 | * <[https://opentutorials.org/module/516/5440 클래스 맴버와 인스턴스 맴버]><<공동공부>>,2013-12-04 | ||
* <[https://easywebs.tistory.com/29 맴버변수 지역변수 전역변수]><<쉽고 친절한 프로그래밍>>,2017-04-30 | * <[https://easywebs.tistory.com/29 맴버변수 지역변수 전역변수]><<쉽고 친절한 프로그래밍>>,2017-04-30 | ||
− | * <[https://ramees.tistory.com/16 맴버변수:클래스변수, 인스턴스변수]><<무무위키>>,2016-08-03 | + | * <[https://ramees.tistory.com/16 맴버변수:클래스변수, 인스턴스변수]>, <<무무위키>>, 2016-08-03 |
− | * <[https://ko.wikipedia.org/wiki/%EB%A9%A4%EB%B2%84_%EB%B3%80%EC%88%98 맴버 변수]><<위키백과>>,2017-07-10 | + | * <[https://ko.wikipedia.org/wiki/%EB%A9%A4%EB%B2%84_%EB%B3%80%EC%88%98 맴버 변수]>, <<위키백과>>, 2017-07-10 |
− | == | + | == 같이 보기 == |
+ | * [[함수]] | ||
+ | * [[회원]] | ||
{{프로그래밍|검토 필요}} | {{프로그래밍|검토 필요}} |
2022년 1월 14일 (금) 20:32 기준 최신판
멤버(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(재정의)기술로 확장된다.
- 메소드가 리턴하는 값과 리턴되는 값의 데이터 타입은 일치해야 한다.
각주[편집]
- ↑ <클래스 맴버와 인스턴스 맴버><<공동공부>>,2013-12-04
- ↑ <맴버변수><<위키백과>>,2017-07-10
- ↑ <맴버변수 지역변수 전역변수><<쉽고 친절한 프로그래밍>>,2017-04-30
- ↑ <맴버변수 : 클래스변수, 인스턴스변수><<무무위키>>,2016-08-03
참고 자료[편집]
- <클래스 맴버와 인스턴스 맴버><<공동공부>>,2013-12-04
- <맴버변수 지역변수 전역변수><<쉽고 친절한 프로그래밍>>,2017-04-30
- <맴버변수:클래스변수, 인스턴스변수>, <<무무위키>>, 2016-08-03
- <맴버 변수>, <<위키백과>>, 2017-07-10
같이 보기[편집]