Animal animal=new Cat();
1.animal是不是被赋值Cat中的方法和属性?
1.上面试子是不是等同于
Cat cat=new cat();
Animal animal=cat;
1.animal是不是被赋值Cat中的方法和属性?
这是创建了一个Cat类对象。然后用一个animal的指针指向这个类对象的空间而已
2.可以这么等同。
如果 Animal 是 Cat 的父类
那么你的问题的答案都是 是
否则都是错误的,连语法检查都通不过
回答是:不是,他并不是“animal是不是被赋值Cat中的方法和属性”
他只是把new Cat()new的一个实例本身赋值给了animal变量,然后在用Animal的方法表套在这个实例上。
也就是他不是把方法和属性赋值了,实际情况和你理解的恰恰是相反的,他反而用父类的方法和属性给这个实例“套上了”
这个过程呢,也许你想不明白。没关系,有耐心的去看《Clr via C#》,没耐心的就看《你必须知道的net》
如果连看书的都没耐心,我就只能举个例子了。相机和滤镜。 类型就是滤镜,相机拍摄的对象就是你new出来的实例
你可以换滤镜,但是实例又没变。Animal animal=new Cat();实际含义是:用一个叫Animal的滤镜去看一个Cat的实例