多态面向对象的主要特征之一可以实现相同代码不同情况下实现不一样的功能
虚方法实现多态
父类声明方法时加 virtual关键字表示这是一个虚方法
子类声明方法时加override关键字表示这个方法是重写父类中的虚方法
声明对象时 使用父类类型 声明对象变量 使用子类类型 构造对象
class Person //声明Person类 { public Person(string name) //声明构造函数 { this.Name = name; } public string Name { get; set; } //声明属性 public virtual void Show() //用virtual关键字声明方法 表示这是一个虚方法可以被子类重写 { Console.WriteLine("我是父类虚方法!"); } } class Chinese:Person //声明Chinese类并且继承自Person类 { public Chinese(string name):base(name) //调用父类构造函数 { } public override void Show() //用override关键字重写父类中的方法 { Console.WriteLine("我是中国人 我叫:{0}",Name); } } Person en = new Chinese("某某某"); en.Show(); Console.ReadKey();
en在调用Show方法是 程序会自动判断子类中的Show方法有没有被重写 被重写则调用子类方法 如果没有重写调用父类中的Show方法
C#中的5种访问修饰符
private 私有访问修饰符,只能在类内部访问该修饰符修饰的类成员(类不能被标记为私有的)
internal 内部访问修饰符,只能在程序级内部访问该修饰符修饰的类(新建类如果不加修饰符默认为internal修饰符修饰)
protected 保护访问修饰符,只能在本类或者继承自本类的子类中才能被访问
protected internal 保护+内部 访问修饰符,在程序集内部或者继承自本类的子类中才能被访问
public 共有访问修饰符,在程序的任何地方都能访问
使用反射等方法可以访问私有 内部 保护等修饰符修饰的类或成员属性