基本内容 方法的隐藏 方法的重写 抽象类和抽象方法 密封类和密封方法 嵌套类 分部类
6 基本内容 方法的隐藏 密封类和密封方法 嵌套类 方法的重写 抽象类和抽象方法 分部类
什么是多态 用刀叉 ■ 吃饭 用筷子 用手抓 > 同样一件行为(吃饭),但表现的形式却是不同的,这 就是生活中的多态。 > 这种不同类型的对象对于同一方法表现出了不同的行 为的方式就是多态。 继承是子类使用父类的方法,而多态则是父类使用子类的方法
7 什么是多态 ➢ 同样一件行为(吃饭),但表现的形式却是不同的,这 就是生活中的多态 。 ➢ 这种不同类型的对象对于同一方法表现出了不同的行 为的方式就是多态 。 分析 ▪ 吃饭 用刀叉 用筷子 用手抓 继承是子类使用父类的方法,而多态则是父类使用子类的方法
虚方法和方法重写 ■ 重写方法 ■在基类中使用关键字virtual定义虚方法 ■派生类中使用关键字override来重写方法 可用于方法、属性、索引器、事件 丕能和static、abstract、override、privat e同用 public viruar vo Console.WriteLine("姓名:{0},年龄:{1,工资:2",name,Age,salary); } public override void Display() base.Display(); Console.WriteLine("津贴是:{O}",this.Bonus)月 } 8
8 虚方法和方法重写 ▪ 重写方法 ◼ 在基类中使用关键字 virtual定义虚方法 ◼ 派生类中使用关键字 override来重写方法 可用于方法、属性、索引器、事件 不能和static、abstract、override、privat e同用
关于重写 如果一个基类的方法声明为虚函数,任何继承该虚函数的 子类可以声明override方法重写它 ■子类重写的方法必须和父类的虚函数有相同的签名 ■override不能改变基类虚函数的访问权限 ■override不能和static、virtual、.new同用 ·被重写的方法必须是virtual或abstracti或override override用于扩展或修改继承的且声明为abstracti或 virtual的方法、属性、索引器、事件 public override void Display() { 可以通过base调用继承的基类的虚函数 base Display0: Console.WriteLine("津贴是:{0}",this.Bonus);
9 关于重写 ▪ 如果一个基类的方法声明为虚函数,任何继承该虚函数的 子类可以声明override方法重写它 ▪ 子类重写的方法必须和父类的虚函数有相同的签名 ▪ override不能改变基类虚函数的访问权限 ▪ override不能和static、virtual、new同用 ▪ 被重写的方法必须是virtual或abstract或override ▪ override用于扩展或修改继承的且声明为abstract或 virtual的方法、属性、索引器、事件 public override void Display() { base.Display(); Console.WriteLine("津贴是:{0}",this .Bonus ); } 可以通过base调用继承的基类的虚函数
重写和隐藏的区别 同一个子类对象实例 通过子类引用执行的是子类的版本 ▣隐藏 通过父类引用执行的也是父类的版本 。重写 通过子类引用执行的是子类的版本 通过父类引用执行的也是子类的版本 字段 ■可以使用new隐藏,但不能设置为virtual ■子类特有的成员 ■不能通过父类来引用 10
10 重写和隐藏的区别 ▪ 同一个子类对象实例 ◼ 隐藏 ◼ 重写 ▪ 字段 ◼ 可以使用new隐藏,但不能设置为virtual ▪ 子类特有的成员 ◼ 不能通过父类来引用 通过子类引用执行的是子类的版本 通过父类引用执行的也是父类的版本 通过子类引用执行的是子类的版本 通过父类引用执行的也是子类的版本