Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 从基类重写已实现的方法_Oop_Overriding - Fatal编程技术网

Oop 从基类重写已实现的方法

Oop 从基类重写已实现的方法,oop,overriding,Oop,Overriding,重写已经在基类中实现的基类方法是一种好的做法吗 如果没有,是否可以在派生类中添加新方法?是。如果您正在进行子类化,以便创建一个对调用方透明的实现超类型方法的新类型,那么您可以并且应该重写基类中的方法,以便在子类的上下文中正确地实现它们 只要确保使用基类实例的调用方可以以相同的方式处理子类实例,即子类实现与超类中方法的含义一致 在不知道更多的情况下,还不清楚这是否符合你的要求,但我想我会尝试一下你提出的问题。因此,我将忽略待澄清的第二个问题,因为第一个问题的答案是肯定的。是的,这肯定是一种良好的做

重写已经在基类中实现的基类方法是一种好的做法吗


如果没有,是否可以在派生类中添加新方法?

是。如果您正在进行子类化,以便创建一个对调用方透明的实现超类型方法的新类型,那么您可以并且应该重写基类中的方法,以便在子类的上下文中正确地实现它们

只要确保使用基类实例的调用方可以以相同的方式处理子类实例,即子类实现与超类中方法的含义一致


在不知道更多的情况下,还不清楚这是否符合你的要求,但我想我会尝试一下你提出的问题。因此,我将忽略待澄清的第二个问题,因为第一个问题的答案是肯定的。

是的,这肯定是一种良好的做法,而且经常是必要的。例如,您通常希望增强基类方法的行为,例如:

// overriding method foo()

void foo() {
    // do something unique to the base class:
    println("called from child class!");

    // call parent class's implementation:
    super.foo();
}

@我想问的是,重写一个已经实现的方法不会修改基类行为吗?这取决于你所说的修改是什么意思。派生类的实例当然会做一些与基类的实例不同的事情。如果您不希望这样做,那么首先就不会创建子类。属于超类型但不是子类型成员的实例的行为将一如既往。重写基类中已实现的方法不会修改基类行为吗?@user793468 No;基类对其子类一无所知。