试图了解什么是方法,它如何成为“类的一部分”?

时间:2018-11-21 14:15:02

标签: ruby methods

我已经完成了Javascript函数的一些工作,并认为方法是相同名称的Ruby名称。我最近进行了一次技术面试,面试官试图通过解释方法是如何作为类的一部分来帮助我进行调试的,这是一个面向对象的事情。

我无法发现方法和等效函数之间的功能差异,因此我看不到类与它有什么关系。

您能解释一下整个“方法是类的一部分”吗,为什么这么重要?方法如何成为类的一部分?类是整数还是字符串?

面试官相信这会有所帮助,但似乎比它有用的东西还多。

3 个答案:

答案 0 :(得分:3)

  

您能解释一下整个“方法是类的一部分”吗,为什么这么重要?方法如何成为类的一部分?类是整数还是字符串?

假设您有两个班级,苹果和蛋糕。假设您出售苹果时,其税率为10%,蛋糕的税率为20%。通过将方法划分为单独的类,我们可以为每个类定义不同的“ price_with_tax”方法:

class Apple < ApplicationRecord
  def price_with_tax
    self.price * 1.1
  end
end

class Cake < ApplicationRecord
  def price_with_tax
    self.price * 1.2
  end
end

在javascript中,我们将无法执行此操作,因此需要有2种方法,“加10%税”和“加20%税”。通过构造现有的方法,我们可以做到:

apple = Apple.find(1)
cake = Cake.find(1)
cake.price_with_tax
apple.price_with_tax

答案 1 :(得分:2)

方法通常是类可以做的事情, MailClient类(例如)可能具有sendMail,getMail,forwardMail等方法。在OOP中,方法在大多数情况下应该是类可以做的事情。

    MailClient.getMail();

以上代码可以概念化为告诉类调用其getMail()行为。

您可能会用现实的术语来思考,例如:

Dog.bark();

对象具有行为和属性,行为是方法。

答案 2 :(得分:0)

在OOP中:

类就像一个蓝图/模板。它具有属性,方法等。可以使用它创建对象。因此,对象可以在类中调用方法。 通常,创建方法来执行操作。

示例:

// a demo class
public class Animal{
    // a method
    public void sound(){
        // do something...
    }

    // main class, we create an object and call sound() method
    public static void main(String[] args){
        Animal dog = new Animal();     // create an object so that we can use the method
        dog.sound();    // method call
    }
}