📄 13 - creating an abstract method.rb
字号:
class Shape2D def area raise NotImplementedError. new("#{self.class.name}#area is an abstract method.") endendShape2D.new.area# NotImplementedError: Shape2D#area is an abstract method.#---class Square < Shape2D def initialize(length) @length = length end def area @length ** 2 endendSquare.new(10).area # => 100#---class Shape2D def initialize raise NotImplementedError. new("#{self.class.name} is an abstract class.") endendShape2D.new# NotImplementedError: Shape2D is an abstract class.#---class Class def abstract(*args) args.each do |method_name| define_method(method_name) do |*args| if method_name == :initialize msg = "#{self.class.name} is an abstract class." else msg = "#{self.class.name}##{method_name} is an abstract method." end raise NotImplementedError.new(msg) end end endend#---class Animal abstract :initialize, :moveendAnimal.new# NotImplementedError: Animal is an abstract class.#---class Sponge < Animal def initialize @type = :Sponge endendsponge = Sponge.newsponge.move# NotImplementedError: Sponge#move is an abstract method.#---class Cheetah < Animal def initialize @type = :Cheetah end def move "Running!" endendCheetah.new.move# => "Running!"#---class Sponge def move "Floating on ocean currents!" endendsponge.move# => "Floating on ocean currents!"#---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -