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