继承类中是否存在完全相同的字段?
//抽象类 无法被实例化 public abstract class Animal { public abstract void ShowType(); //抽象类中的抽象函数不能被实现 public void SayHello() { Console.WriteLine("Hello"); } //抽象类里的普通函数可以被实现 } public class Bird : Animal { public string type = "Bird"; //public string type; public override void ShowType() { Console.WriteLine("Type is {0}", type); } } public class Chicken : Bird { public string type = "Chicken"; //运行到子类的type字段的时候 程序会先检查一下 是否其继承的父类 含有同名字段 如果有,则优先执行父类的同名字段 public override void ShowType() { Console.WriteLine("Type is {0}", type); } } class Program { static void Main(string[] args) { //Animal a = new Animal(); //抽象类本身 无法被实例化,不能在堆的内存中分配存储空间(不能new一个Animal的对象) // Animal a1 = new Chicken(); //但抽象类 可以被其子类给实例化 // Animal a = new Bird(); //而且抽象类 可以被其多重子类给实例化 Bird bird = new Chicken(); // Bird bird = new Bird(); Chicken c = new Chicken(); Console.WriteLine("c" + c.type); //在两个继承关系的类中 如果子类 父类含有同名 同类型的字段,编译时 系统会自动给它们以区分,所以不存在完全相同的字段 Console.WriteLine(bird.type); //输出结果为bird //Console.WriteLine(); // bird.ShowType(); //输出结果为Type is Chicken Console.ReadLine(); } }
作者:SilverSky(SoFlash)
出处:http://www.cnblogs.com/longwu/
欢迎学习和转载,转载请注明出处.
浙公网安备 33010602011771号