[Ruby] Define abstract methods

2015-07-24 05:40:48 · 作者: · 浏览: 7

Ruby has its own style to define the abstract methods in its class.

class Shape
  
  def initialize
    raise NotImplementedError.new("#{self.class.name} is an abstract class")
  end
  
  def area
    raise NotImplementedError.new("#{self.class.name} area is an abstract method ")
  end
  
end

class Square < Shape
  
  def initialize(length)
    @length = length
  end
  
  def area
    @length ** 2
  end
end

Shape.new().area

puts Square.new(10).area