作业帮 > 综合 > 作业

请问为什么最后一个执行结果是I‘am a dog.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 18:57:47
请问为什么最后一个执行结果是I‘am a dog.
要知道继承在.net里是单根性和传递性;当一个父类变量指向子类对象的时候,通过这个变量来调用同名的方法的时候,会调用父类的同名方法,当遇到virtual(虚方法)的时候,会去找子类重写方法;
所以声明的Animal pet 变量 调用WhoAreYou()方法时,会先找到Animal对象里面的WhoAreYou()方法,但发现是虚方法,就找他的子类Dog,而Dog重写了这个WhoAreYou()方法;所以就显示“I am a dog”.这主要体现了:继承的单根性的.