无法在c#中创建这两个类的对象?

时间:2016-05-26 07:19:18

标签: c# class oop

我创造了两个类,即A& B这是下面给出的代码

class Program
{
    public class A
    {
        public int add(int x, int y)
        {
            return x + y;
        }
    }

    public class B:A
    {
        public int sub(int x, int y)
        {
            return x - y;
        }
    }

    static void Main(string[] args)
    {
        A t = new A();
        t.add(10,20);
        B r = new B();
        r.sub(20, 10);
        A B
    }
}

B类继承自A类但是当我想要制作一个对象时

A B = new AB();
AB类的

然后它无法创建对象。这背后的原因是什么?

5 个答案:

答案 0 :(得分:1)

B = new B();就足够了。

名称应该是您定义类名的方式。名称不是合成的。在您的情况下,类B继承自类A,并将包含类A的所有功能。

例如:

B b = new B();

int sum = b.add(10, 30);
int difference = b.sub(10, 30);

答案 1 :(得分:1)

不幸的是,没有课程AB

如果要创建A类型的类,那么您应该A B = new A();而不是A B = new AB();

此外,由于B来自A,因此如果您创建B,则可以访问类protected/public实例中的所有B属性,字段和方法{1}}:

B b = new B();
b.add(); //this is B but use class A method, it is OK

因此,您可以创建类B

的对象实例

答案 2 :(得分:1)

您的代码已经显示您正在制作new A()new B()。那里的 没有AB()。根据继承的性质,B 已经 A; 每个 B也是A - 只是更具体的子类型。

A B = new AB();

说“将B声明为A类型的新变量,并为其指定AB的新实例”。如果你创建class AB : A,这实际上甚至可以编译。不过,这可能不是你的意思。

答案 3 :(得分:0)

请阅读一些c#语言语法和C# Programming/Inheritance文章的基础知识。

答案 4 :(得分:0)

通过使用继承这意味着你要添加到基类.....所以当你创建B时你说继承A ...这意味着你的方法在B(即.sub)中是可用的,但是所有的方法都在A(即.add)。

所以要做一个AB所有你需要做的就是使用B ...因为它有两个这样的B b = new B();

再加上你把这些名字搞糊涂了; A应该是AddValues,B应该是AddandSubtractValues,从而清楚地记录你的代码......它会在以后帮助你