【发布时间】:2012-11-16 01:14:32
【问题描述】:
我正在编写一个包含 4 个类(Point、Shape、Rectangle、Circle)的程序。 Rectangle 和 Circle 继承自 Shape,其中包含形状中心的信息(字段)。我正在尝试为 Circle 类编写一个 to_s 方法,它应该像下面这样打印出来:
圆:[(1, 2), 3]
(1,2) 是中心,3 是半径。这就是我的 to_s 方法:
def to_s
"Circle: [(" + super.x.to_s + ", " + super.y.to_s + "), " +
radius.to_s + "]"
end
我收到一个错误“没有这样的方法 'x' 错误”,我知道这是因为 Shape 没有 'x' 方法(它在 Point 中)。我尝试了一些长方法链接,例如 super.center.y.to_s,但这有其自身的问题。这样做的正确方法是什么。即,良好的编程风格、面向对象的方式和 ruby 方式?
【问题讨论】:
-
我对你的类定义感到困惑。你能把它们包括在问题中吗?
-
你应该使用字符串插值而不是加法,它更干净,更快。
标签: ruby oop inheritance