자료관리/C#

03.메서드(method)

noc777 2025. 1. 31. 10:53
메서드

 

매서드는 다른 프로그래밍 언어에서도 통괄적으로 사용되는 함수를 다르게 부르는 언어입니다.

함수, 메서드, 프로시저 등 각 언어마다 다르게 부르는 특징이 있기도 하고 언어마다 고유한 특성을 가지기도 합니다.

해당 클래스의 특정한 기능을 담아놓은 요소로 일단 정의하겠습니다.

 

메서드의 특징

 

메서드는 순서대로 접근제한자,반환타입, 메서드 명,매개 변수라는 구성요소로 이루어져 있습니다. 

 

//접근 제한자 public 
//반환 타입 void
//메서드 명칭 Method1
//매개변수 int 타입의 num


public void Method1(int num)
{

}

 

접근제한자란 무엇일까? 

더보기
더보기

public , private protected 등 다른 클래스에서 접근 할 수 있는 권한이 어느정도 있는지를 말합니다.

 

public : 외부에서 접근이 허용된 클래스

private :  외부가 아닌 내부에서만 사용가능한 클래스 (상속받은 클래스에선 사용 불가능)

protected : 내부나 상속받은 클래스에서만 사용가능한 클래스

 

반환 타입이란 무엇일까?

더보기
더보기

반환 타입은 메서드가 종료되는 시점에 반환하는 값을 말합니다. 

 

void : 반환하지 않는 메서드를 뜻합니다. return이 생략될 수 있습니다

int , bool float 등 void 가 아닌 타입 : 해당 타입에 맞는 타입을 꼭 반환해야하며 반환하는 것은 메서드안에서 

return 뒤에 쓰입니다.

public void Method1(){}  //반환값이 없음


public int Add(int num1,int num2) //int 타입을 반환 
{
	return num1 + num2; //여기서 반환 하는 것은 return 뒤의 결과 즉 num1 + num2 의 결과가 반환 될 것
}

public bool isTrue() //bool 타입을 반환 
{
	
    return trigger; //특정 조건에 성립할 시 true 나 false를 반환한다. 
    
}

 

 

return 은 무슨 뜻인가요? 

return은 해당 함수를 끝낸다는 뜻입니다. return이 호출된 시점에서 메서드가 끝까지 가지 않더라도 

메서드는 종료됩니다. 이를 이용해서 특정 시점에 메서드가 종료될 수 있습니다.

 

메서드 명칭 : 메서드 명칭은 해당 메서드의 고유 이름입니다. 

동일한 이름을 가진 메서드라도 다른 기능을 가질 수 있는데 이는 메서드 오버로드와 오버라이딩에서 다룹니다.

public class car
{
	public void drive(){}
}

public class train
{
	public void drive(){}
}

//각각 drive라는 메서드를 보유하고 있지만

car.drive();
train.drive();

//차와 기차는 서로 다른 조종법을 가지듯 둘은 각각의 클래스 내의 다른 메서드임을 알자

 

매개변수란 무엇일까?

더보기
더보기

매개변수는 해당 메서드를 호출하는 시점에서 넣어주어야하는 값입니다.

 

해당 메서드가 특정한 타입을 조작하거나 그 클래스 내의 요소를 사용해야만 할 때 매개변수를 넣어주도록 유도합니다.

public void drive(Key mykey) //Key 라는 타입을 매개변수로 쓰는 메서드
{

}


//자동차에 시동을 걸려면 키가 필요하듯 해당 메서드를 사용하기 위해선 고유한 타입의 매개변수를 넣어주어야 합니다.
drive(mykey);

 

 

메서드 오버로드

 

메서드 오버로드란 같은 클래스 내 같은 이름이더라도 다른 특징을 가지는 경우를 말합니다.

 

public void Eat(Candy candy){}

public void Eat(Bread bread){}

//두 메서드는 이름이 같지만 각각 필요한 매개변수가 다릅니다. 이 경우엔 넣어주는 매개변수에 따라 실행이 달라집니다.
//반환 타입만 다르고 매개변수가 같은 경우는 오버로드가 인정되지 않습니다. 오류가 생깁니다.

 

 

메서드 오버라이딩

 

메서드 오버라이딩은 객체 지향의 상속과 연관되어 있습니다.

 

상속하는 클래스의 요소를 사용하되 상속받는 클래스에선 기능을 좀 더 추가하거나 수정하고 싶을 수도 있습니다. 

그럴 때 사용하는 것이 virtual,override  키워드입니다.  

public class Car
{
	public virtual void Drive(){}
}

public class Jeep : Car
{
	public override void Drive()
    {
    	base.Drive(); //상속하는 클래스의 Drive 또한 수행
    }
}

Car.Drive();
Jeep.Drive();

 

virtual은 상속받는 클래스에서 사용되는 상속하는 클래스의 내용을 재정의 할 것인지 묻는 것입니다.

override 키워드는 virtual 키워드를 사용한 메서드의 내용과 다르게 재정의가 가능합니다.

즉 내용을 덮어쓰기 한다고 생각하면 됩니다.

만일 상속하는 클래스의 내용도 가져오고 싶다면 base 키워드를 통해 그 내용도 가져와서 수행이 가능합니다.

 

그리고 여러개의 자식 클래스를 만드는 중 override를 하고 싶지 않은 경우가 생긴다면 new 키워드를 통해 

해당 클래스 내의 새로운 클래스 임을 선언할 수도 있습니다.

public new void Drive()
{
}

 

'자료관리 > C#' 카테고리의 다른 글

02. 변수  (0) 2025.01.24
01. C#  (0) 2025.01.23