C#里的父类对象引用子类实例的理解

面向对象的多态


 //父类可以引用子类对象。
            //父类引用只能调用子类继承父类的方法,父类引用不能调用子类独有的方法。
            People newPeople = new Man("Bilu");//如在“人类”类中引用一个 “男人”实例
         





//子类引用不能直接赋值父类对象,除非将父类对象进行强制转换
                //编译ok,运行异常
                Man newMan = (Man)new People("neddy");//但在“男人”类中不全是“人类”类   “人类”类中还有“女人”类






对于 People newPeople =new Man ("");
    People newPeople = new People("");他俩的比较是 你不能说男人他不是人,只不过定义变量时使用的接口不同而已。




例子:
接口IA里有方法: fa()
接口IB里有方法: fb()
子类C实现(继承)了接口IA,IB,并且子类自己定义了个方法fc(),则子类C就有:fa(),fb(),fc()三个方法

当子类C的实例objC被IA类型的引用指向的时候[IA objC = new C()或者(IA)objC],你可以调用到的是fa(),“通俗”的说objC这里是IA类型的(实际上是C类型),而并不是C类型的,所以只能调IA的fa()

当子类C的实例objC被IB类型的引用指向的时候[IB objC = new C()或者(IB)objC],你可以调用到的是fb(),“通俗”的说objC这里是IA类型的,而并不是(其实是)C类型的,所以只能调IB的fb()

当子类C的实例objC被C类型的引用指向的时候[C objC = new C()或者(C)objC],你可以调用到的是fa(),fb(),fc()


详细学习底层的东西。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值