关于继承类是否需要强制转换的为题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
dog dog = new dog();
animal animal = (animal)dog;// 问题在此处:为何去掉(animal)后结果一样。是不是意味着基类引用指向继承实例时不需要强制转换?有隐式转换?
animal.eatfood();
}
}
class animal
{
virtual public void eatfood()
{
Console.WriteLine("this is animal eat food");
Console.ReadKey();
}
}
class dog : animal
{
override public void eatfood()
{
Console.WriteLine("this is dog eat food");
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
dog dog = new dog();
animal animal = (animal)dog;// 问题在此处:为何去掉(animal)后结果一样。是不是意味着基类引用指向继承实例时不需要强制转换?有隐式转换?
animal.eatfood();
}
}
class animal
{
virtual public void eatfood()
{
Console.WriteLine("this is animal eat food");
Console.ReadKey();
}
}
class dog : animal
{
override public void eatfood()
{
Console.WriteLine("this is dog eat food");
Console.ReadKey();
}
}
}
...全文
相关推荐
C++四种强制类型转换
`dynamic_cast`在下行转换时提供额外的安全性,因为它会检查目标类型是否匹配,而`static_cast`则不会做这样的检查。4.
数据类型的强制转换实例
### 数据类型的强制转换实例本篇文章将通过一个具体的C++代码示例来深入探讨数据类型的强制转换,并结合类继承的概念来展示如何在不同类型的指针间进行安全有效的转换。
java 强制类型转换示例
类与接口之间的转换: 对于类和接口,强制类型转换仅适用于对象。如果一个对象是某个类的实例,你可以将其转换为该类的子类或实现的接口。
浅谈Java中强制类型转换的问题
强制转换只能在编译时就知道转换是安全的情况下进行,即源类型和目标类型之间有明确的继承或转换关系。除了数组之间的转换,强制类型转换也可能发生在类的继承层次结构中。
C++ 四种强制类型转换的总结
- **多态性**: 只有当类中有虚函数时,才能使用 `dynamic_cast`。- **适用于继承体系**: 可以用于基类和派生类之间的转换。


