计算的本质1.5 类和模块_计算的本质1.5 类和模块试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 计算的本质 > 1.5 类和模块

计算的本质——1.5 类和模块

能在许多对象之间共享方法定义是件很便利的事。在 Ruby 中我们可以把方法定义放到一个类里,然后通过给那个类发送 new 消息来新建对象。所获得的对象是包括方法在内的这个类的实例。例如: >> class Calculator def divide(x, y) x / y end end => nil >> c = Calculator.new => #<Calculator> >> c.class => Calculator >> c.divide(10, 2) => 5 注意,在一个类定义里定义一个方法会把方法添加到那个类的实例里,而不是加到 main 里: >> divide(10, 2) NoMethodError: undefined method `divide' for main:Object 一个类可以通过继承来引入另一个类的方法定义: >> class MultiplyingCalculator < Calculator def multiply(x, y) x * y end end => nil >> mc = MultiplyingCalculator.new => #<MultiplyingCalculator> >> mc.class => MultiplyingCalculator >> mc.class.superclass => Calculator >> mc.multiply(10, 2) => 20 >> mc.divide(10, 2) => 5 子类中的方法可以通过 super 关键字调用超类的同名方法: >> class BinaryMultiplyingCalculator < MultiplyingCalculator def multiply(x, y) result = super(x, y) result.to_s(2) end end => nil >> bmc = BinaryMultiplyingCalculator.new => #<BinaryMultiplyingCalculator> >> bmc.multiply(10, 2) => "10100" 另一种共享方法定义的方式是在模块(module)中声明它们,这样它们就能被任意类包括进去: >> module Addition def add(x, y) x + y end end => nil >> class AddingCalculator include Addition end => AddingCalculator >> ac = AddingCalculator.new => #<AddingCalculator> >> ac.add(10, 2) => 12

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《计算的本质》其他试读目录

• 1.1 交互式Ruby Shell
• 1.2 值
• 1.3 控制流
• 1.4 对象和方法
• 1.5 类和模块 [当前]
• 1.6 其他特性