关于继承的纠结

父类Animal,子类Bird,再下面的子类Chicken

从而有两种方式来使用此类:Bird b=new Chicken();Chicken c=new Chicken();

在内存分配方面两个对象都是相同的,不同的只有引用类型的不同,一个是Bird类型的引用,一个是Chicken类型的引用

那么怎么来看待b和c的区别呢?

如果按照简单的方法来理解,那就是两个关键字的作用,一个是override,一个是new

在使用override的时候,不论是什么类型的指针,访问的都是实例的方法

在使用new的时候,如果引用类型是父类,那么访问的是父类的方法或者属性,如果引用类型是子类,那么访问的子类的方法和属性

问题:

1.当内存分配相同的时候,如何确保引用类型的指针指向不同的方法表地址?

2.在VS环境中,当我们按下Class.这个点的时候,属于编译期间,还是属于什么阶段?因为当是父类的时候,只能看见父类的方法和属性,而看不见子类的方法和属性,当时子类的时候,可以看见父类和子类的属性

 

你可能感兴趣的:(c)