我创造了两个类,即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类的然后它无法创建对象。这背后的原因是什么?
答案 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,从而清楚地记录你的代码......它会在以后帮助你