能否简单解释一下在面向对象编程中方法和函数的区别?
方法和函数之间有明显的区别:
函数是一段独立的代码,你可以通过给定参数并提及其名称在任何地方调用它,例如在大多数过程式语言中,如C++和Python。而
方法特别与一个对象相关联,这意味着你只能通过在它前面加上点(.)符号并提及它的对象来调用一个方法,例如在纯面向对象的语言中,如C#和Java。
从微软的这篇文档中了解到:
包含可执行代码的成员统称为类的函数成员。前面的部分描述了方法,它们是函数成员的主要类型。本节将介绍 C# 支持的其他几种函数成员:构造函数、属性、索引器、事件、运算符和终结器。
因此,方法是函数的子集。每个方法都是一个函数,但不是每个函数都是方法。例如,constructor
不能被称为 方法,但它是一个函数。
以下是使用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方法是包含函数定义的属性。
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对象方法,函数,原型的更多信息
class User {
public string name; // I made it public intentionally
// Each instance method takes a hidden reference to "this"
public void printName(/*User & this*/) {
cout << this.name << endl;
}
};
等同于
public getName(User & user) {
// No syntactic sugar, passing a reference explicitly
cout << user.name << endl;
}
user->printName()
只是getName(user)
的语法糖。this
作为第一个参数的函数。函数是一组指令或过程,用于执行特定任务。它可以将代码分割成易于理解的部分,并且可以被调用或重复使用。
方法是可以在对象上执行的操作。它也被称为存储为对象属性的函数。
主要区别: 函数不需要任何对象并且是独立的,而方法是与任何对象相关联的函数。
//firstName() is the function
function firstName(){
cosole.log('John');
}
firstName() //Invoked without any object
const person = {
firstName: "John",
lastName: "Doe",
id: 5566,
};
//person.name is the method
person.name = function() {
return this.firstName + " " + this.lastName;
};
document.getElementById("demo").innerHTML =
"My father is " + person.name() //performs action on object;
类体内定义的函数。如果作为该类实例的属性被调用,则该方法将把该实例对象作为其第一个参数(通常称为
self
)。参见函数和嵌套作用域。
一个正方形是个矩形,但并不是所有的矩形都是正方形。在我看来,方法就是函数,但并非所有的函数都是方法。而方法之所以独特,是因为它是一种特殊类型的函数,同时还与类相关联,并可以访问类成员变量。
方法
是任何对象或类的成员。
一个 函数
是独立的。函数
和 方法
是可互换的。# function
def putSqr(a)
puts a ** 2
end
class Math2
# method
def putSqr(a)
puts a ** 2
end
end
if(class(object)) { ... } else {stop()}
在概念上等同于方法吗? - Konrad