먼저 메소드와 함수의 차이를 단순하게 설명하면, 함수란 어떤 입력값에 따라 결과를 내주는 것들(메소드, 사용자 정의 함수, 내장함수)을 가리키는 용어입니다. 반면 메소드란, 함수중애서 클래스, 구조체, 열거형 안에서 정의된 것을 말합니다. 그래서 메소드를 클래스 함수라고도 합니다. (메소드는 함수에 포함됩니다.)
함수의 의미
프로그래밍언어에서 메소드와 함수의 차이를 말하기에 앞서 함수의 의미먼저 알아보겠습니다.
프로그래밍언어의 함수는 수학에서의 함수와 유사합니다. 수학에서 함수는 f(x) = 2x+1처럼 표현하며,
함수에 x라는 값을 넣으면 그에 따른 정해진 결과가 나옵니다.(위의 함수에 x=1이면 3, x=2이면 5)
프로그래밍언어의 함수도 이와 유사합니다. 어떤 값(매개변수)을 투입하면 결과를 줍니다.
def a(a, b):
return a+b
def b():
return "python"
print(a(1, 2)) #3
print(b()) #python
함수 a는 두 개의 값을 받아서 결과값을 주고, 함수 b는 호출되면 python이라는 값을 줍니다.
(프로그래밍언어의 함수가 수학의 함수랑 다른점은 단순히 호출만을 입력삼아 결과를 내주기도 한다는 점이며 그것이 반드시 수학적인 수식이 아니라는 점입니다.)
즉, 프로그래밍언어에서의 함수는 어떤 값(숫자, 글자, 호출, 객체 등)을 입력받아 그에 따른 정해진 결과(값 출력, 값 입력, 다른 메소드 호출, 컴퓨터 종료 등)를 실행해 주는 도구로 사용되는 코드조각 입니다.
메소드의 의미
메소드는 클래스 안에 함수가 정의된 것을 의미합니다. 즉, 함수가 메소드를 포함하고 있죠.
여기서부터는 제가 이해한 것을 정리한 것으로 정확한지는 모르겠습니다. 여러분이 스스로 판단해주세요.
우리는 왜? 함수와 메소드를 구별하는 걸까요..? 그냥 함수만 사용하면되는 것 아닐까요?
일단, 저희는 함수만 사용하는 것이 맞습니다. 메소드도 클래스 함수니까요. 그러니까 질문을 바꿔야 합니다.
우리는 왜? 메소드가 아닌 함수(사용자 정의함수, 내장함수)와 메소드를 구별하는 걸까요? 그냥 메소드가 아닌 함수만 사용하면 되는 것 아닐까요?
제 생각은 메소드가 아닌 함수와 메소드는 역할이 다르기 때문에 구별할 필요가 있다는 것 입니다.
다시한번 정리하면 메소드는 클래스에 종속되기에 얻는 특징이 있습니다.
객체의 메소드를 사용하고자 한다면, 객체명.함수명을 사용합니다. 즉, 객체가 있어야하며 메소드는 객체에 종속되게 됩니다. 그렇기 때문에 메소드는 객체의 모든 변수를 접근, 조작할 수 있습니다. 즉, 객체 맞춤형입니다.
하지만, 함수는 함수명만으로 호출되며 객체를 구별하지 않습니다. 그래서 객체에 적용하기 힘들고 억지로 적용해도 복잡해질 것 입니다.
분명, 메소드가 객체, 클래스에 종속되면서 함수와 다른 다양한 차이가 있겠지만, 제가 코드를 많이 봐온 경험이 부족해 더 이상은 무리 같아서 여기서 마칩니다. 미완성된 부족한 글이지만, 도움이 되었기를 바랍니다.
'Programming > 용어' 카테고리의 다른 글
인자와 매개변수의 차이 (0) | 2021.11.25 |
---|---|
static(정적)변수를 사용하는 이유 (0) | 2021.11.14 |
(초보자를 위한) Ajax이란? (0) | 2021.11.14 |
자바) 추상클래스 vs 인터페이스 (0) | 2021.07.27 |
객체, 클래스, 인스턴스의 차이 (0) | 2021.06.23 |