我在我的 C# 程序中尝试了以下代码。这只是为了学习 OOP 概念。
class a
{
public void testa()
{
}
}
class b:a
{
public void testb()
{
}
}
a a1 = new b();
b b1 = new a();
我对上述代码有以下疑问。
- 为什么我在第二行出现错误?
a a1=new b()
是什么意思;- 为什么
a1.testb()
无法访问,即使b
的构造函数已分配给a1
? a a1=new a()
和a a1=new b()
有什么区别?
最佳答案
1) 如果你指的是这一行:
b b = new a();
这是因为每个b
都是a
但不是每个a
都是b
2-3) a a1=new b();
是什么意思
为什么 a1.testb()
无法访问,即使 b
的构造函数已分配给 a1
?
这意味着您创建了 b
类的对象,但将其作为 a
进行引用(您可以通过此引用来处理它,而无需仅将其转换为 a
即使是 b
)
关于C# 创建类和派生类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784092/