📜  门| GATE-CS-2016(套装2)|问题 21(1)

📅  最后修改于: 2023-12-03 14:58:31.389000             🧑  作者: Mango

门 | GATE-CS-2016(套装2)|问题 21

这道题是关于面向对象编程的,题目描述如下:

你需要给定一个类,叫做Door,这个类包含以下属性和方法:

  • isOpen:一个布尔值,代表门的状态,True表示门是打开的,False表示门是关闭的。
  • isLocked:一个布尔值,代表门的锁定状态,True表示门是锁定的,False表示门是没锁定的。
  • knock():一个方法,如果门是打开的,则什么都不发生,如果门是锁定的,则什么都不发生,否则门会响起敲门声。

现在,你需要实现另一个类,叫做SecurityDoor,这个类应该继承自Door,并将isLocked属性初始化为True

你还需要添加一个新的方法,叫做lock(),这个方法将把isLocked属性设置为True

同时,你需要覆盖knock()方法,当门是打开的时候,这个方法什么都不做。当门被锁定时,这个方法应该打印出一条警告信息。

这时候,你需要考虑如何实现这个类,具体实现代码如下所示:

class Door:
    def __init__(self, isOpen, isLocked):
        self.isOpen = isOpen
        self.isLocked = isLocked

    def knock(self):
        if not self.isLocked and not self.isOpen:
            print("Knock! Knock!")
        else:
            pass


class SecurityDoor(Door):
    def __init__(self):
        super().__init__(isOpen=False, isLocked=True)

    def lock(self):
        self.isLocked = True

    def knock(self):
        if not self.isLocked and not self.isOpen:
            print("Knock! Knock!")
        elif self.isLocked:
            print("Warning: Door is locked!")
        else:
            pass

上述代码中,首先我们定义了一个基类Door,这个类包含了isOpenisLocked两个属性和一个knock()方法。接下来,我们定义了一个派生类SecurityDoor,这个类继承自Door,它含有一个新方法lock()并在初始化时将其锁定。SecurityDoor类还覆盖了基类中的knock()方法,当门被锁定时,它会打印出一条警告信息。

这个程序实现了一个相当基础的面向对象编程案例。如果你是一个新手,这个问题可能需要你花一些时间来理解它的各个方面,但一旦你理解了基础原理,就可以解决类似的问题了。