Ram*_*Ram 0 .net c# casting static-typing
我有两节课
 public class A
    {
        public A()
        {
        }
    }
    public class B:A
    {
        public B()
        {
        }
    }
它的主要代码如下
    A oa = new B();
    B ob = new A();
第1行成功编译,而第2行显示类型转换错误.为什么会这样.什么时候new B()和new A()被召唤到底发生了什么?
您已声明了一个类型的变量B,然后尝试为其分配一个类型的值A.你已经定义B了一种A,但这并不意味着所有人A都是B.
可以这样想:
class Animal { }
class Dog : Animal { }
class Cat : Animal { }
你可以做Animal rex = new Dog(),因为所有的狗都是动物,但不是Dog fido = new Animal(),因为不是所有的动物都是狗.
| 归档时间: | 
 | 
| 查看次数: | 336 次 | 
| 最近记录: |