public class Animal
{
........
}
public class cat:Animal
{
.........
}Animal theAnimal=new Animal();
Animal theAnimal=new cat();
cat theAnimal=new cat();
请求详细讲解一下这三个theAnimal对象有什么差别,他们各自代表了些什么内容?谢谢!
更希望能够讲解一下内存里实际存储。
{
........
}
public class cat:Animal
{
.........
}Animal theAnimal=new Animal();
Animal theAnimal=new cat();
cat theAnimal=new cat();
请求详细讲解一下这三个theAnimal对象有什么差别,他们各自代表了些什么内容?谢谢!
更希望能够讲解一下内存里实际存储。
解决方案 »
- VPN技术(两个adsl 两个路由器实现局域网)
- 对于打DATASET中新增的一条记录,并将其存到数据库中,其记录状态是怎么变化的?
- 请教高手关于强类型自动生成代码中transaction的修饰符为internal的问题
- 求助:为什么验证控件失效了?
- ricttextbox控件里面的设置了字体大小和颜色及图片,怎么保存这些属性到文件。下次读取的时候再显示出来。
- ListView的大难题!!!我想把数据放到Listview里面,不知道怎样做????绝对给分!!
- 如何获得自建的全局程序集的代码目录?
- 我买的Wrox的书怎么在www.wrox.com上找不到源码下载?
- 怎样在datagrid中使用DropDownList
- 怎么样把 .netframework框架 也加到安装包里呀!!急!!
- winform DataGridView导出Excel类
- 如何使用WebBrowser打开显示本地一个htm文件?
cat theAnimal=new cat();
显然这两个都是实例化一个各自的类。
Animal theAnimal=new cat();
是实例化一个cat的对象,并将他的引用赋值给animal类型的引用,这就相当于对这个cat的对象进行了强制换换(子类转父类是可以的)
cat theAnimal=new cat();
显然这是同一个类型的实例,只是赋值给了不同的类型变量,因为Animal未cat得父类,所以可以直接赋值,而不用强转而
Animal theAnimal=new Animal();
是是Animal对象实例
你可能持基类模板而装子类的内容
{
public string word="";
public virtual void Introduce()
{
word="I'm a Animal";
}
}
public class cat:Animal
{public new void Introduce()
{
word="I'm a cat";
}
}Animal theAnimal=new cat();
theAnimal.Introduce();
MessageBox.show(theAnimal.word);
结果为I'm a Animal
而cat theAnimal=new cat();结果为I'm a cat
new关键字不是用来区别派生类和基类同名方法选择问题,来隐藏基类方法吗?为什么第一个的结果还为I'm a Animal