【发布时间】:2016-09-09 02:31:06
【问题描述】:
我正在粘贴以下代码:
abstract public class test
{
abstract public void add(int a, int b);
}
class Program : test
{
public void add(decimal a, decimal b)
{
decimal c = a + b;
Console.WriteLine("Decimal Addition : {0}", c);
}
public override void add(int a, int b)
{
int c = a + b;
Console.WriteLine("Addition : {0} ", c);
}
static void Main(string[] args)
{
Program obj = new Program();
obj.add(10, 111);
Console.ReadLine();
}
}
我不明白为什么上面的抽象类没有执行? 上面的代码运行完美,也产生了输出。 我的问题是,即使在调用 add() 方法时仍然在 Program 类中覆盖了抽象方法,为什么非抽象方法正在执行而抽象方法没有?
如果我将程序更改为:
abstract public class test
{
abstract public void add(int a, int b);
}
class Program : test
{
public void add(decimal a, decimal b)
{
decimal c = a + b;
Console.WriteLine("Decimal Addition : {0}", c);
}
public override void add(int a, int b)
{
int c = a + b;
Console.WriteLine("Addition : {0} ", c);
}
static void Main(string[] args)
{
test obj = new Program();
obj.add(10, 111);
Console.ReadLine();
}
}
然后我的 Abstract 方法正在执行并给我想要的结果。请任何人解释。下面一行中实际发生了什么。我知道这是一个非常基本的问题,但我在这里有点困惑。请帮忙 !提前致谢。
test obj = new Program();
【问题讨论】:
-
到底发生了什么与您的预期不同?
-
您的问题是什么?
-
如上所说,你并没有真正使用你的抽象类。也许您想做
test obj = new Program();,这将创建一个新程序但将其作为“测试” -
抽象方法不执行。他们没有任何实现。目前还不清楚你的问题是什么。
-
很抱歉,但我已尽力解释我感到困惑的情况。这可能是 OOPS 中的一个非常基本的概念,但现在我对程序行为感到很困惑。
标签: c# oop abstract-class abstract-methods