누군가 OOP 컨텍스트에서 메서드 대 기능 에 대한 간단한 설명을 제공할 수 있습니까?
질문자 :willc2
함수 는 이름으로 호출되는 코드 조각입니다. 작동할 데이터(즉, 매개변수)를 전달할 수 있으며 선택적으로 데이터(반환 값)를 반환할 수 있습니다. 함수에 전달되는 모든 데이터는 명시적으로 전달됩니다.
메서드 는 개체와 연결된 이름으로 호출되는 코드 조각입니다. 대부분의 면에서 두 가지 주요 차이점을 제외하고는 기능과 동일합니다.
- 메서드는 호출된 개체를 암시적으로 전달합니다.
- 메소드는 클래스 내에 포함된 데이터에 대해 작업할 수 있습니다(객체는 클래스의 인스턴스임을 기억하십시오. 클래스는 정의이고, 객체는 해당 데이터의 인스턴스임을 기억하십시오).
(이것은 범위 등의 문제를 무시하고 단순화 된 설명입니다.)
Andrew Edgecombe
메서드가 개체에 있거나 클래스에서 정적입니다.
함수는 모든 객체(및 클래스 외부)에 독립적입니다.
Java 및 C#의 경우 메서드만 있습니다.
C의 경우 기능만 있습니다.
C++ 및 Python의 경우 클래스에 있는지 여부에 따라 다릅니다.
그러나 기본 영어:
- 기능 : 독립 실행형 기능.
- 방법 : 접근 방식이나 방법이 다르지만 동일한 측면(클래스라고도 함)과 관련된 작업을 수행하는 한 가지 방법입니다.
Aaron
'method' 는 'function'에 대한 객체 지향 단어입니다. 이것이 거의 전부입니다(즉, 실제 차이가 없음).
불행히도 여기에 있는 많은 답변이 복잡하고 의미 있는 차이가 있다는 생각을 영속화하거나 발전시키고 있다고 생각합니다.
정말 - 그것에 대한 모든 것이 그렇게 많지는 않습니다. 단지 같은 것에 대해 다른 단어일 뿐입니다.
[늦은 추가]
실제로 Brian Neal 이 이 질문 에 대한 주석에서 지적했듯이 C++ 표준은 멤버 함수를 참조할 때 '메서드'라는 용어를 사용하지 않습니다. 어떤 사람들은 그것을 C++가 실제로 객체 지향 언어가 아니라는 표시로 받아들일 수 있습니다. 그러나 나는 꽤 똑똑한 사람들이 다른 용어를 사용해야 할 특별히 강력한 이유가 있다고 생각하지 않았다는 표시로 받아들이고 싶습니다.
Michael Burr
일반적으로: 메서드는 클래스에 속하는 함수이고, 함수는 코드의 다른 범위에 있을 수 있으므로 모든 메서드가 함수이지만 모든 함수가 메서드인 것은 아닙니다.
다음 파이썬 예제를 살펴보십시오.
class Door: def open(self): print 'hello stranger' def knock_door: a_door = Door() Door.open(a_door) knock_door()
주어진 예제는 "open"이라는 메소드 또는 액션이 있는 "Door"라는 클래스를 보여줍니다. 클래스 내부에서 선언되었기 때문에 메소드라고 합니다. 바로 아래에 함수를 정의하는 "def"가 있는 코드의 또 다른 부분이 있습니다. 클래스 내부에서 선언되지 않았기 때문에 함수입니다. 이 함수는 여러분이 볼 수 있는 것처럼 클래스 내부에서 정의한 메소드를 호출하고 마지막으로 함수는 자체적으로 호출됩니다.
보시다시피 어디에서나 함수를 호출할 수 있지만 메서드를 호출하려면 메서드가 선언된 클래스(Class.method(object))와 동일한 유형의 새 개체를 전달해야 하거나 호출해야 합니다. 적어도 파이썬에서는 객체 내부의 메소드(object.Method()).
메서드를 하나의 엔터티만 할 수 있는 것으로 생각하십시오. 따라서 Dog 클래스가 있는 경우 해당 클래스 내에서만 껍질 기능을 갖는 것이 합리적이고 메서드가 될 것입니다. Person 클래스도 있다면 다음을 수행하는 것이 합리적일 수 있습니다. 사람과 개 모두에게 먹이를 줄 수 있기 때문에 어떤 클래스에도 속하지 않는 "feed" 함수를 작성하고 특정 클래스에 속하지 않기 때문에 함수를 호출할 수 있습니다.
Gustavo Rubio
기억하는 간단한 방법:
- F의 REE → F의 기름 부음은 (무료가 어느 곳이 될 수 있음을 의미 할 필요는 객체 나 클래스에서 할 수 없습니다)
- M은 M 타다 남은 (객체 또는 클래스의 멤버) → ethod
Duc Filan
Function 과 Method 의 주요 차이점에 대한 매우 일반적인 정의:
함수는 클래스 외부에서 정의되는 반면 메소드는 클래스 내부 및 클래스의 일부로 정의됩니다.
Jorgesys
여기를 읽고 싶은 생각이 든다면 "나의 OO 방식 입문서"
객체 지향 패러다임의 이면에 있는 아이디어는 소프트웨어가 .. "객체"로 구성되어 "위협"하는 것입니다. 현실 세계의 객체에는 속성이 있습니다. 예를 들어 직원이 있는 경우 직원은 이름, 직원 ID, 직위, 부서 등에 속해 있습니다.
또한 개체는 속성을 처리하고 속성에 대해 몇 가지 작업을 수행하는 방법을 알고 있습니다. 직원이 지금 무엇을 하고 있는지 알고 싶다면 그에게 물어보자.
employe whatAreYouDoing.
그 "whatAreYouDoing"은 개체에 전송된 "메시지"입니다. 객체는 그 질문에 답하는 방법을 알고 있으며 질문을 해결하는 "방법"이 있다고합니다.
따라서 객체가 동작을 노출해야 하는 방식을 메서드라고 합니다. 따라서 메소드는 아티팩트 개체가 무언가를 "수행"해야 합니다.
다른 가능한 방법은
employee whatIsYourName employee whatIsYourDepartmentsName
등.
반면에 함수는 프로그래밍 언어가 일부 데이터를 계산하는 방식입니다. 예를 들어 16을 반환하는 addValues( 8 , 8 ) 함수가 있을 수 있습니다.
// pseudo-code function addValues( int x, int y ) return x + y // call it result = addValues( 8,8 ) print result // output is 16...
최초의 인기 있는 프로그래밍 언어(예: fortran, c, pascal)는 OO 패러다임을 다루지 않았기 때문에 이러한 아티팩트를 "함수"로만 호출합니다.
예를 들어 C의 이전 함수는 다음과 같습니다.
int addValues( int x, int y ) { return x + y; }
객체에 어떤 작업을 수행하기 위한 "함수"가 있다고 말하는 것은 "자연적"이 아닙니다. 함수는 수학적 내용과 더 관련이 있는 반면 직원은 이에 대한 수학적 정보가 거의 없기 때문입니다. 그러나 함수와 정확히 동일한 기능을 수행하는 메서드를 가질 수 있습니다. 예를 들어 Java에서 이것은 동등한 addValues 함수입니다.
public static int addValues( int x, int y ) { return x + y; }
친숙해 보이죠? Java는 C++에 뿌리를 두고 있고 C에는 C++에 뿌리를 두고 있기 때문입니다.
결국에는 개념일 뿐이며 구현에서는 동일하게 보일 수 있지만 OO 문서에서는 이를 메서드라고 합니다.
다음은 Java의 이전 Employee 개체의 예입니다.
public class Employee { Department department; String name; public String whatsYourName(){ return this.name; } public String whatsYourDeparmentsName(){ return this.department.name(); } public String whatAreYouDoing(){ return "nothing"; } // Ignore the following, only set here for completness public Employee( String name ) { this.name = name; } } // Usage sample. Employee employee = new Employee( "John" ); // Creates an employee called John // If I want to display what is this employee doing I could use its methods. // to know it. String name = employee.whatIsYourName(): String doingWhat = employee.whatAreYouDoint(); // Print the info to the console. System.out.printf("Employee %s is doing: %s", name, doingWhat ); Output: Employee John is doing nothing.
차이점은 적용되는 "도메인"에 있습니다.
AppleScript는 어느 시점에서 OO가 가지고 있던 "자연어" 표기법에 대한 아이디어를 가지고 있습니다. 예를 들어 스몰토크. 이 글을 읽은 후 객체의 메소드를 이해하는 것이 합리적으로 더 쉬울 수 있기를 바랍니다.
참고: 코드는 예제로 사용하기 위해 컴파일되지 않습니다. 자유롭게 게시물을 수정하고 Python 예제를 추가하세요.
Community Wiki
OO 세계에서 둘은 일반적으로 같은 의미로 사용됩니다.
순수한 수학 및 CS 관점에서 함수는 동일한 인수( f(x,y) = (x + y) )로 호출될 때 항상 동일한 결과를 반환합니다. 반면에 메서드는 일반적으로 클래스의 인스턴스와 연결됩니다. 다시 말하지만, 대부분의 현대 OO 언어는 더 이상 대부분의 경우 "함수"라는 용어를 사용하지 않습니다. 많은 정적 메서드는 일반적으로 상태가 없기 때문에 함수와 매우 유사할 수 있습니다(항상 참은 아님).
TheSoftwareJedi
함수가 일부 인수를 수신할 수 있고 결과를 반환할 수도 있는 코드 블록(일반적으로 자체 범위, 때로는 자체 클로저 포함)이라고 가정해 보겠습니다.
메소드는 객체가 소유하는 함수입니다(일부 객체 지향 시스템에서는 클래스가 소유한다고 말하는 것이 더 정확합니다). 개체/클래스가 "소유"한다는 것은 개체/클래스를 통해 메서드를 참조한다는 것을 의미합니다. 예를 들어 Java에서 "door" 개체가 소유한 "open()" 메서드를 호출하려면 "door.open()"을 작성해야 합니다.
일반적으로 메서드는 개체/클래스 내에서 동작을 설명하는 몇 가지 추가 속성도 얻습니다. 예를 들어 메서드를 호출할 수 있는 개체(또는 클래스)를 정의하는 가시성(캡슐화의 개체 지향 개념과 관련됨)
많은 객체 지향 언어에서 모든 "함수"는 일부 객체(또는 클래스)에 속하므로 이러한 언어에는 메서드가 아닌 함수가 없습니다.
Mike Tunnicliffe
메소드는 클래스의 함수입니다. 일반적인 전문 용어로 사람들은 방법과 기능을 전반적으로 교환합니다. 기본적으로 당신은 그것들을 같은 것으로 생각할 수 있습니다(전역 함수가 메소드라고 불리는지 확실하지 않음).
Statement
역사적으로 값을 반환하지 않는 "메소드"와 값을 반환하는 "함수" 사이에는 미묘한 차이가 있을 수 있습니다. 각 언어에는 특별한 의미를 지닌 자체 용어 사전이 있습니다.
"C" 에서 "함수" 라는 단어 는 프로그램 루틴을 의미합니다.
Java 에서 "함수" 라는 용어는 특별한 의미가 없습니다. 반면 "메소드" 는 클래스 구현을 구성하는 루틴 중 하나를 의미합니다.
C# 에서는 다음과 같이 번역됩니다.
public void DoSomething() {} // method public int DoSomethingAndReturnMeANumber(){} // function
그러나 실제로, 나는 두 개념에서 실제로 차이가 없음을 다시 반복합니다. Java에 대한 비공식 토론에서 "함수"라는 용어를 사용하면 사람들은 당신이 "메소드"를 의미한다고 가정하고 계속할 것입니다. Java에 대한 적절한 문서나 프레젠테이션에서 사용하지 마십시오. 그렇지 않으면 어리석게 보일 것입니다.
Jaimin Patel
함수는 수학적 개념입니다. 예를 들어:
f(x,y) = sin(x) + cos(y)
함수 f()가 두 번째 매개변수의 코사인에 추가된 첫 번째 매개변수의 sin을 반환한다고 말합니다. 그냥 수학입니다. sin()과 cos()도 함수입니다. 함수에는 또 다른 속성이 있습니다. 매개변수가 동일한 함수에 대한 모든 호출은 동일한 결과를 반환해야 합니다.
반면에 메서드는 객체 지향 언어에서 객체와 관련된 기능입니다. 여기에는 하나의 암시적 매개변수가 있습니다. 즉, 대상이 되는 개체(및 해당 상태)입니다.
따라서 g(x) 메서드가 있는 객체 Z가 있는 경우 다음을 볼 수 있습니다.
Zg(x) = sin(x) + cos(Zy)
이 경우 앞의 함수 예제에서와 같이 매개변수 x가 전달됩니다. 그러나 cos()에 대한 매개변수는 객체 Z 내부에 있는 값입니다. Z와 내부에 있는 데이터(Zy)는 Z의 g() 메서드에 대한 암시적 매개변수입니다.
Bradley Mazurek
함수 또는 메서드는 일부 작업을 수행하고 선택적으로 값을 반환하는 명명된 호출 가능한 코드 조각입니다.
C 언어에서는 함수라는 용어가 사용됩니다. Java 및 C# 사람들은 그것을 메소드라고 말할 것입니다(이 경우 함수는 클래스/객체 내에서 정의됨).
C++ 프로그래머는 이것을 함수라고 부를 수도 있고 때로는 메서드라고 부를 수도 있습니다(절차적 스타일의 C++ 코드를 작성하는지 또는 C++의 객체 지향 방식을 수행하는지에 따라, C/C++ 전용 프로그래머도 '메서드'라는 용어가 있기 때문에 함수라고 부를 수 있습니다. C/C++ 문헌에서는 덜 자주 사용됨).
다음과 같이 이름을 호출하여 함수를 사용합니다.
result = mySum(num1, num2);
다음과 같이 객체를 먼저 참조하여 메서드를 호출합니다.
result = MyCalc.mySum(num1,num2);
Abdullah Leghari
함수는 데이터를 조작하는 데 사용할 수 있는 논리 집합입니다.
반면, Method는 그것이 속한 객체의 데이터를 조작하는 데 사용되는 기능입니다. 따라서 기술적으로 클래스와 완전히 관련이 없지만 클래스에서 선언된 함수가 있는 경우 메서드가 아닙니다. 나쁜 디자인이라고 합니다.
gian ebao
오브젝트 파스칼이나 C++와 같은 객체지향 언어에서 "메소드"는 객체와 관련된 함수입니다. 예를 들어 "Dog" 개체에는 "bark" 기능이 있을 수 있으며 이는 "메소드"로 간주됩니다. 대조적으로, "StrLen" 함수는 독립적입니다(인수로 제공된 문자열의 길이를 제공합니다). 따라서 그것은 단지 "기능"입니다. Javascript는 기술적으로 객체 지향적이기도 하지만 C++, C# 또는 Pascal과 같은 완전한 언어에 비해 많은 제한 사항에 직면해 있습니다. 그럼에도 불구하고 그 구분은 여전히 유지되어야 합니다.
몇 가지 추가 사실: C#은 완전히 개체 지향적이므로 독립 실행형 "함수"를 만들 수 없습니다. C#에서 모든 함수는 개체에 바인딩되므로 기술적으로 "메서드"입니다. 중요한 것은 C#에서 이를 "메소드"라고 부르는 사람이 거의 없다는 것입니다. 실제로 구별할 사항이 없기 때문에 "함수"라는 용어만 사용합니다.
마지막으로 - 모든 Pascal 전문가가 여기에서 저에게 뛰어들지 않도록 - Pascal은 또한 "함수"(값을 반환함)와 "절차"를 구분하지 않습니다. 물론 값을 반환할지 여부를 선택할 수 있지만 C#에서는 이러한 구분을 명시적으로 하지 않습니다.
Mark Brittingham
클래스의 메소드는 객체라고 하는 클래스의 인스턴스에서 작동합니다.
class Example { public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable". public void UpdateData() // .. and manipulates it (This is a method by the way) { data = data + 1; } public void PrintData() // This is also a method { Console.WriteLine(data); } } class Program { public static void Main() { Example exampleObject1 = new Example(); Example exampleObject2 = new Example(); exampleObject1.UpdateData(); exampleObject1.UpdateData(); exampleObject2.UpdateData(); exampleObject1.PrintData(); // Prints "2" exampleObject2.PrintData(); // Prints "1" } }
Statement
Python을 언급했기 때문에 다음은 대부분의 최신 객체 지향 언어에서 메서드와 객체 간의 관계에 대한 유용한 설명일 수 있습니다. 간단히 말해서 그들이 "메소드"라고 부르는 것은 추가 인수를 전달받는 함수일 뿐이지만(다른 답변에서 지적했듯이) Python은 이를 대부분의 언어보다 더 명시적으로 만듭니다.
# perfectly normal function def hello(greetee): print "Hello", greetee # generalise a bit (still a function though) def greet(greeting, greetee): print greeting, greetee # hide the greeting behind a layer of abstraction (still a function!) def greet_with_greeter(greeter, greetee): print greeter.greeting, greetee # very simple class we can pass to greet_with_greeter class Greeter(object): def __init__(self, greeting): self.greeting = greeting # while we're at it, here's a method that uses self.greeting... def greet(self, greetee): print self.greeting, greetee # save an object of class Greeter for later hello_greeter = Greeter("Hello") # now all of the following print the same message hello("World") greet("Hello", "World") greet_with_greeter(hello_greeter, "World") hello_greeter.greet("World")
greet_with_greeter
greet
메서드를 비교합니다. 유일한 차이점은 첫 번째 매개변수의 이름입니다(함수에서는 "greeter"라고 불렀고 메서드에서는 "self"라고 불렀습니다). greet_with_greeter
함수를 사용하는 것과 정확히 같은 방식으로 greet
메소드를 사용할 수 있습니다(클래스 내부에서 정의했기 때문에 "점" 구문을 사용하여 얻습니다):
Greeter.greet(hello_greeter, "World")
그래서 저는 효과적으로 메소드를 함수로 만들었습니다. 함수를 메소드로 바꿀 수 있습니까? 글쎄, 파이썬을 사용하면 클래스가 정의된 후에 클래스를 엉망으로 만들 수 있으므로 다음을 시도해보자.
Greeter.greet2 = greet_with_greeter hello_greeter.greet2("World")
예, greet_with_greeter
greet2
메소드로도 알려져 있습니다. 이것은 메서드와 함수 사이의 유일한 실제 차이점을 보여줍니다. object.method(args)
를 호출하여 객체 "위에서" 메서드를 호출하면 언어가 마법처럼 method(object, args)
로 바꿉니다.
(OO 순수주의자들은 메소드가 함수와 다르다고 주장할 수 있으며, 고급 Python이나 Ruby 또는 Smalltalk에 입문하면 요점을 알 수 있을 것입니다. 또한 일부 언어는 메소드에 객체의 비트에 대한 특별한 액세스 권한을 부여합니다. 그러나 주요 개념적 차이점은 여전히 숨겨진 추가 매개변수입니다.)
Sam Stokes
나를 위해: 메소드와 함수의 기능은 다음과 같이 동의하면 동일합니다.
- 함수는 값을 반환할 수 있습니다
- 매개변수를 기대할 수 있음
코드의 모든 부분과 마찬가지로 입력한 개체가 있을 수 있으며 결과적으로 개체가 나타날 수 있습니다. 그렇게 하는 동안 그들은 객체의 상태를 변경할 수 있지만 그것이 나를 위한 기본 기능을 변경하지는 않을 것입니다.
객체 또는 다른 코드의 호출 기능에 정의 차이가 있을 수 있습니다. 그러나 그것은 언어적 차이를 위한 것이 아니므로 사람들이 그것을 교환하는 것입니까? 내가 주의할 계산의 예를 언급합니다. 계산을 하기 위해 직원을 고용하기 때문입니다.
new Employer().calculateSum( 8, 8 );
그렇게 함으로써 나는 계산을 책임지는 고용주에게 의존할 수 있습니다. 그가 더 많은 돈을 원하면 나는 그를 풀어주고 나머지는 사용하지 않은 직원을 처리하는 탄수화물 수집가의 기능을 수행하고 새 직원을 얻습니다.
메서드가 객체 함수이고 함수가 연결되지 않은 계산이라고 주장하는 것조차 도움이 되지 않습니다. 함수 설명자 자체와 이상적으로는 함수 설명서에서 필요한 것과 반환할 수 있는 것을 알려줍니다. 일부 개체의 상태를 조작하는 것과 같은 나머지는 나에게 실제로 투명하지 않습니다. 나는 기능과 방법 모두 그들이 어떻게 하는지 자세히 알 필요 없이 그들이 주장하는 바를 전달하고 조작하기를 기대합니다. 순수한 계산 기능조차도 콘솔의 상태를 변경하거나 로그 파일에 추가할 수 있습니다.
Dirk Schumacher
매우 간단한 대답이어야 하는 것을 지나치게 복잡하게 만들지 맙시다. 방법과 기능은 같은 것입니다. 함수가 클래스 외부에 있을 때 함수를 호출하고 클래스 내부에 작성될 때 함수를 호출합니다.
SamyCode
내 이해에 따르면 메서드는 클래스에서 수행할 수 있는 모든 작업입니다. 프로그래밍에서 사용되는 일반적인 용어입니다.
많은 언어에서 메소드는 함수와 서브루틴으로 표현됩니다. 대부분의 언어에서 사용하는 주요 차이점은 함수가 호출자에게 값을 반환할 수 있고 서브루틴이 반환하지 않을 수 있다는 것입니다. 그러나 많은 현대 언어에는 기능만 있지만 선택적으로 값을 반환하지 않을 수 있습니다.
예를 들어 고양이를 묘사하고 싶고 하품을 할 수 있기를 원한다고 가정해 보겠습니다. 반환 값이 없는 함수일 가능성이 높은 Yawn 메서드를 사용하여 Cat 클래스를 만듭니다.
marcj
1차 근사치에서 메서드(C++ 스타일 OO에서)는 멤버 함수, 즉 클래스의 일부인 함수에 대한 또 다른 단어입니다.
C/C++와 같은 언어에서는 클래스의 멤버가 아닌 함수를 가질 수 있습니다. 클래스와 연관되지 않은 함수는 호출하지 않습니다.
Captain Segfault
IMHO 사람들은 객체 내부의 기능을 참조하고 싶을 때 프로그래머 간의 더 쉬운 의사 소통을 위해 새로운 단어를 발명하고 싶었습니다.
메소드를 말하는 경우 클래스 내부의 함수를 의미합니다. 함수를 말하는 경우 단순히 클래스 외부의 함수를 의미합니다.
진실은 두 단어가 기능을 설명하는 데 사용된다는 것입니다. 잘못 사용하더라도 아무 이상이 없습니다. 두 단어 모두 코드에서 달성하려는 것을 잘 설명합니다.
함수는 어떤 일을 하는 역할( 함수 )을 수행해야 하는 코드입니다. 방법은 문제를 해결하는 방법이다.
동일한 작업을 수행합니다. 그것은 같은 것입니다. 매우 정확하고 규칙을 따르고 싶다면 메서드를 객체 내부의 함수로 호출할 수 있습니다.
Morfidon
함수는 주로 프로시저 지향 프로그래밍에 속하는 개념으로 함수는 데이터를 처리하고 값을 반환할 수 있는 엔터티입니다.
메서드는 메서드가 주로 클래스 멤버에 대한 처리를 수행하는 클래스의 멤버 인 객체 지향 프로그래밍 의 개념입니다.
Akshay Khale
나는 전문가는 아니지만 이것이 내가 아는 것입니다.
함수는 C 언어 용어로 코드 조각을 나타내며 함수 이름은 이 함수를 사용하는 식별자가 됩니다.
메소드는 객체 지향 용어이며 일반적으로 함수 매개변수에 this 포인터가 있습니다. C처럼 이 코드 조각을 호출할 수 없습니다. 호출하려면 개체를 사용해야 합니다.
호출 방법도 다릅니다. 여기서 이 코드 조각의 주소를 찾기 위해 의미를 호출합니다. C/C++에서 연결 시간은 함수 기호를 사용하여 찾습니다.
목표 C는 다릅니다. 데이터 구조를 사용하여 주소를 찾는 C 함수를 의미합니다. 런타임에 모든 것이 알려져 있음을 의미합니다.
Marvin
나는 많은 다른 사람들이 이미 대답했다는 것을 알고 있지만 다음은 간단하지만 효과적인 한 줄 대답이라는 것을 알았습니다. 다른 사람들이 여기에 답한 것보다 훨씬 좋아 보이지는 않지만주의 깊게 읽으면 방법 대 기능에 대해 알아야 할 모든 것이 있습니다.
메서드는 정의된 수신기가 있는 함수입니다. OOP 용어로 메서드는 개체의 인스턴스에 대한 함수입니다.
f-society
함수 - 일부 논리를 포함하고 독립적으로 호출되어야 하고 클래스 외부에서 정의 되는 독립적인 코드 조각의 함수입니다.
메서드 - 메서드는 일부 개체를 참조하여 호출되고 클래스 내부에서 정의 되는 독립적인 코드 조각입니다.
Aditya
C++에서는 클래스의 멤버 함수 개념을 반영하기 위해 메서드를 사용하는 경우가 있습니다. 그러나 최근에 책 «C++ 프로그래밍 언어 4판», 586페이지의 "파생 클래스"에서 한 문장을 찾았습니다.
가상 함수를 메서드라고 하는 경우가 있습니다.
이것은 약간 혼란스럽긴 하지만 그는 가끔 이렇게 말했습니다. 그래서 대략 이치에 맞습니다. C++ 작성자는 함수가 객체에서 호출될 수 있고 다형성으로 동작할 수 있는 것으로 메서드를 보는 경향이 있습니다.
Lance LI
다음은 JavaScript 예제를 사용하여 메서드와 함수에 대한 몇 가지 설명입니다.
test(20, 50);
함수 정의 및 일부 단계를 실행하거나 어딘가에 저장/사용할 수 있는 무언가를 반환하는 데 사용합니다.
코드를 재사용할 수 있습니다. 코드를 한 번 정의하고 여러 번 사용하십시오.
다른 인수와 함께 동일한 코드를 여러 번 사용하여 다른 결과를 생성할 수 있습니다.
var x = myFunction(4, 3); // Function is called, return value will end up in x function myFunction(a, b) { return a * b; // Function returns the product of a and b }
var test = something.test();
여기서 test()는 일부 객체의 메서드이거나 내장 객체에 대한 프로토타입을 사용자 정의할 수 있습니다. 자세한 설명은 다음과 같습니다.
JavaScript 메서드는 개체에 대해 수행할 수 있는 작업입니다.
JavaScript 메서드는 함수 정의를 포함하는 속성입니다.
자바스크립트의 문자열에 대한 내장 속성/메서드:
var message = "Hello world!"; var x = message.toUpperCase(); //Output: HELLO WORLD!
사용자 정의 예:
function person(firstName, lastName, age, eyeColor) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.eyeColor = eyeColor; this.changeName = function (name) { this.lastName = name; }; } something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'
예를 들어 String, Array 등에 대한 속성도 정의할 수 있습니다.
String.prototype.distance = function (char) { var index = this.indexOf(char); if (index === -1) { console.log(char + " does not appear in " + this); } else { console.log(char + " is " + (this.length - index) + " characters from the end of the string!"); } }; var something = "ThisIsSomeString" // now use distance like this, run and check console log something.distance("m");
일부 참조: Javascript Object Method , Functions , 프로토타입에 대한 추가 정보
Lahar Shah
메소드와 함수의 차이점
Microsoft에서 이 문서를 읽으면서
실행 코드를 포함하는 멤버를 집합적으로 클래스의 함수 멤버라고 합니다. 이전 섹션에서는 기본 종류의 함수 멤버인 메서드에 대해 설명합니다. 이 섹션에서는 C#에서 지원하는 다른 종류의 함수 멤버인 생성자, 속성, 인덱서, 이벤트, 연산자 및 종료자를 설명합니다.
따라서 메서드는 함수의 하위 집합입니다. 모든 메서드는 함수이지만 모든 함수가 메서드 constructor
는 메서드 라고 할 수 없지만 함수입니다.
Siraj Alam
클래스는 선택적으로 생성자와 함께 일부 데이터 및 함수의 모음입니다.
특정 클래스의 인스턴스(복사, 복제)를 생성하는 동안 생성자는 클래스를 초기화하고 객체를 반환합니다.
이제 클래스는 객체가 되고(생성자 없이) 함수는 객체 컨텍스트에서 메서드로 알려져 있습니다.
그래서 기본적으로
클래스 <==new==>객체
기능 <==new==>메소드
Java에서는 일반적으로 생성자 이름이 클래스 이름과 같지만 실제로 생성자는 인스턴스 블록 및 정적 블록과 비슷하지만 사용자가 반환 유형(즉, 클래스 유형)을 정의하도록 하는 것으로 알려져 있습니다.
클래스에는 정적 블록, 인스턴스 블록, 생성자, 함수가 있을 수 있지만 일반적으로 객체에는 데이터와 메서드만 있습니다.
Subrat Kumar Palhar
출처 : http:www.stackoverflow.com/questions/155609/whats-the-difference-between-a-method-and-a-function
'etc. > StackOverFlow' 카테고리의 다른 글
JavaBean이란 정확히 무엇입니까? (0) | 2021.12.07 |
---|---|
Android에서 Python을 실행하는 방법이 있습니까? (0) | 2021.12.07 |
Git으로 특정 태그 다운로드 (0) | 2021.12.06 |
싱글톤 패턴의 단점은 무엇입니까? [닫은] (0) | 2021.12.06 |
time(1)의 출력에서 'real', 'user' 및 'sys'는 무엇을 의미합니까? (0) | 2021.12.06 |