C#Protected和多态(虚方法)
Protected 在基类中定义后,能被派生类调用,但是不能被其他类调用。
virtual 在基类中定义后,在派生类中能被重写。
using System; using System.Collections.Generic; using System.Text; namespace 继承 { class Vertebrate { protected string spine;//受保护的字段 private double weigth; private double temperature; public double Weigth { set { if (value < 0) { weigth = 0; } else { weigth = value; } } get { return weigth; } } public double Temperature { set { if (value < 0) { temperature = 0; } else { temperature = value; } } get { return temperature; } } public Vertebrate() { spine = "脊柱"; weigth = 0; temperature = 0; } public virtual void Breate() //虚方法 { Console.WriteLine("呼吸"); } public void Sleep() { Console.WriteLine("睡觉"); } } }
using System; using System.Collections.Generic; using System.Text; namespace 继承 { class Program { static void Main(string[] args) { Vertebrate vertebrate = new Vertebrate(); vertebrate.spine1 = "脊柱"; //public的就能被直接调用 Mammal mammal = new Mammal(); Fish fish = new Fish(); Animal animal = new Animal(); Console.WriteLine("我是一只哺乳动物"); mammal.Scukle(); animal.Breate(); mammal.Breate(); fish.Breate(); mammal.Sleep(); mammal.Message(); } } class Fish : Vertebrate { public override void Breate()//重写基类中的虚方法 { Console.WriteLine("用鳃呼吸"); } } class Animal : Vertebrate { } class Mammal : Vertebrate//派生类:基类 { private string arms; private string legs; private int age; public int Age { set { age = value; } get { return age; } } public Mammal() { arms = "前肢"; legs = "后肢"; Age = 0; Weigth = 10; Temperature = 37; } public void Scukle() { Console.WriteLine("哺乳"); } public override void Breate() { Console.WriteLine("用肺呼吸"); } public void Message() { Console.WriteLine("体重:{0}", Weigth); Console.WriteLine("年龄:{0}", Age); Console.WriteLine("体温:{0}", Temperature); Console.WriteLine("我有{0}和{1}", arms, legs); } } }