C#继承问题

classA{publicvoidAa(){Console.WriteLine("classA");}}classC:A{publicvoidCc(){Console.W... class A
{
public void Aa()
{
Console.WriteLine("class A");
}
}

class C : A
{
public void Cc()
{
Console.WriteLine("class C");
}

}
class Program
{
static void Main(string[] args)
{
C c1 = new C();
A a1 = new A();
a1 = c1;
c1 = a1;//这里不行
a1.Cc();//这里也不行
a1.Aa();
}
}
如上,有几点问题
1、a1 = c1;
这行代码这是把子类的引用赋予父类的引用吗??
2、c1 = a1;//这里不行
是因为父类不能赋予子类吗
3、a1.Cc();//这里也不行
报错说A类不包含Cc()这个定义,为什么?? public void Cc() 是public啊,也a1 = c1了啊,为什么不管用呢
希望大大们一一详细解答,谢谢
展开
 我来答
匿名用户
2015-02-04
展开全部
C#中类继承的规则

1、继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。
2、派生类(子类)应当是对基类(父类)的扩展。派生类可以添加新成员,但不能除去已经继承的成员的定义。
3、构造函数和析构函数不能被继承。除此以外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类成员的访问方式只能决定派生类能否访问它们。
4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。(这点需要注意的是,如果是属性或者方法同名,但是签名不同,那就不是覆写,而是重载了)。
5、类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。
6、派生类只能从一个类中继承,可以通过接口实现多重继承。
追问
确实学习到了,不过方便把我的那三个问题回答一下吗,谢谢
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式