声明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么?
1个回答
关注
展开全部
您好亲,当我们声明一个具有两个方法的基类并在其中一个方法中调用第二个方法时,我们可以通过继承该基类并在子类中重写第二个方法来改变其行为。具体来说,在子类中重写第二个方法将导致该方法的行为与基类中的不同。
咨询记录 · 回答于2023-04-15
声明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么?
您好亲,当我们声明一个具有两个方法的基类并在其中一个方法中调用第二个方法时,我们可以通过继承该基类并在子类中重写第二个方法来改变其行为。具体来说,在子类中重写第二个方法将导致该方法的行为与基类中的不同。
您好亲,如果我们创建了一个子类对象并将其塑型为基类,然后调用第一个方法,它将先调用基类的第一个方法,该方法在其中调用第二个方法。然后,由于我们已经将子类对象塑型为基类,因此该调用将执行基类中的第二个方法,而不是子类中重写的方法。因此,子类中重写的方法将不会被调用。如果我们直接调用子类对象中的第一个方法,则将执行子类中的方法,而不是基类中的方法。
Emmm
有具体代码吗
您好亲,class MyClass:def method1(self):print("Calling method2 from method1")self.method2()def method2(self):print("This is method2 in MyClass")class MySubClass(MyClass):def method2(self):print("This is method2 in MySubClass")obj = MySubClass()obj_as_myclass = MyClass()obj_as_myclass.method1()