【问题标题】:In object oriented programming, should inanimate objects have methods/behaviour?在面向对象的编程中,无生命的对象应该有方法/行为吗?
【发布时间】:2020-06-19 06:17:40
【问题描述】:

我是编程新手,已经开始学习面向对象编程。似乎 OOP 用于模拟现实生活中的对象和交互。 我的问题是,无生命的物体应该有行为吗?

例如我应该有类似的东西

class Room:
    clean()

or

class User:
    clean_room(Room)

【问题讨论】:

    标签: oop


    【解决方案1】:

    好问题!你应该两者都有。

    房间绝对可以有一个 clean() 方法,即使它是无生命的。事实上,这实际上是必要的。如果您将房间传递给用户,他们仍然必须调用 Room 类中的一些公共方法来执行清洁。 clean() 将是一个合适的方法。事实上,存在 public 方法,因此它们可以在类的外部被其他类使用。

    为了能够告诉用户他/她应该打扫房间,您还需要用户类中的 clean_room() 方法。然后,此方法将调用 Room 对象的 clean() 方法。

    【讨论】:

    • 谢谢,当我将 clean_room 呼叫“转发”到 room.clean 时,这是否称为委托?
    • 对 room.clean() 的简单“转发”实际上被称为:“转发”。许多人交替使用术语转发和委托。但严格来说,委托是一个不同的概念,其中一个对象代表另一个对象(知道哪个对象调用了函数)。
    • 这里很好地解释了转发和委托之间的区别:Difference between forwarding and delegation。你也可以看看这个discussion
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多