相关疑难解决方法(0)

C#中的阴影和覆盖之间的区别?

阴影覆盖 C#中的方法有什么区别?

c#

95
推荐指数
4
解决办法
8万
查看次数

编译时间多态性与运行时多态性

为什么重载称为编译时多态和覆盖C#中的运行时多态?

c# oop

34
推荐指数
4
解决办法
4万
查看次数

20
推荐指数
3
解决办法
2万
查看次数

超载,覆盖和隐藏?

任何人都可以解释什么是重载,覆盖和隐藏.Net?

谢谢

.net oop

5
推荐指数
3
解决办法
6870
查看次数

当我们重写一个方法时,我们应该使用方法签名中的所有参数吗?

我发现一些替代方法未使用方法签名中的所有参数。

例如:

@Override
protected void setSomething(Object a, Object b, Object c) {
    this.a = a
    this.b = b;
    // the parameter c is not used (ignored)
}
Run Code Online (Sandbox Code Playgroud)

通常,父类不必关心子代将如何实现抽象方法。

但是在MHO中,将使用方法的参数,当子类实现不需要参数时,这种情况非常少见,当这种情况发生时,接口的设计或抽象类可能存在问题。

一个功能的基础是:输入->输入过程->输出。

有时您需要计算这些输入,但是如果您不打算在函数的过程中使用其中的一些输入,则不应将这些输入作为函数的输入。

您可以跳过这些输入的计算,从而调用使用所有输入的精确函数,因此该精确函数。

这种情况唯一可以接受的情况是,当我们不想父类的行为时,可以这样写:

@Override
protected void setSomething(Object a, Object b, Object c) {
      //Nothing to do
}
Run Code Online (Sandbox Code Playgroud)

要么

@Override
 protected void setSomething(Object a, Object b, Object c) {
  throw new UnsupportedOperationException(...);
}
Run Code Online (Sandbox Code Playgroud)

声纳说:

未使用的参数会产生误导。无论传递给此类参数的值是什么,其行为都将相同。

我的问题是:当我们重写方法时,应该使用方法签名中的所有参数吗?

当我说“使用所有参数”时,我试图说方法签名中的所有参数实际上都在方法的主体(实现)中使用。

java

2
推荐指数
1
解决办法
2793
查看次数

标签 统计

c# ×2

oop ×2

.net ×1

java ×1

overloading ×1

polymorphism ×1

terminology ×1