클래스의 멤버 함수(member function)는 일반 변수처럼 클래스 정의 내부에 그 정의 또는 원형(prototype)이 선언되어 있는 함수를 의미합니다. 멤버 함수는 자신이 속한 클래스의 객체에 대해 동작하며, 해당 객체가 가진 모든 클래스 멤버(private 멤버 포함)에 자유롭게 접근할 수 있다는 것이 가장 큰 특징입니다.
즉, 외부에서는 직접 접근할 수 없는 private 필드도 멤버 함수를 통해서는 안전하게 읽고 쓸 수 있기 때문에, 캡슐화(encapsulation)를 지키면서 데이터를 다루는 핵심 수단으로 활용됩니다.
멤버 함수의 기본 형태
다음은 Box 클래스 내부에 선언된 전형적인 멤버 함수의 모습입니다.
public void setLength(double len) {
length = len;
}
public void setBreadth(double bre) {
breadth = bre;
}
C#에서 멤버 함수 정의하고 호출하기
아래 예제는 Box 클래스에 길이·너비·높이를 설정하는 멤버 함수와 부피를 계산하는 멤버 함수를 정의한 뒤, 객체를 통해 이들을 호출하는 방법을 보여줍니다. 객체의 멤버 함수에 접근할 때는 점(.) 연산자를 사용합니다.
using System;
namespace BoxApplication {
class Box {
private double length; // 상자의 길이
private double breadth; // 상자의 너비
private double height; // 상자의 높이
public void setLength(double len) {
length = len;
}
public void setBreadth(double bre) {
breadth = bre;
}
public void setHeight(double hei) {
height = hei;
}
public double getVolume() {
return length * breadth * height;
}
}
class Boxtester {
static void Main(string[] args) {
Box Box1 = new Box(); // Box 타입의 Box1 선언
Box Box2 = new Box(); // Box 타입의 Box2 선언
double volume;
// Box1 사양 설정
Box1.setLength(8.0);
Box1.setBreadth(9.0);
Box1.setHeight(7.0);
// Box2 사양 설정
Box2.setLength(18.0);
Box2.setBreadth(20.0);
Box2.setHeight(17.0);
// Box1의 부피 계산 및 출력
volume = Box1.getVolume();
Console.WriteLine("Volume of Box1 : {0}", volume);
// Box2의 부피 계산 및 출력
volume = Box2.getVolume();
Console.WriteLine("Volume of Box2 : {0}", volume);
Console.ReadKey();
}
}
}
실행 결과
위 코드를 컴파일하여 실행하면 각 객체별로 설정한 값이 멤버 함수를 통해 저장되고, getVolume() 함수가 private 필드에 접근해 부피를 계산해 다음과 같은 결과를 출력합니다.
Volume of Box1 : 504 Volume of Box2 : 6120
정리
멤버 함수는 클래스 내부에 선언되어 객체 단위로 동작하며, private 필드에도 접근할 수 있기 때문에 객체의 상태를 설정(setLength 등)하거나 조회(getVolume 등)하는 인터페이스 역할을 수행합니다. C# 프로그래밍에서 객체지향 설계의 기본이 되는 개념이므로, 점(.) 연산자를 통한 호출 방법과 함께 반드시 숙지해 두는 것이 좋습니다.