C#面向对象-多态
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
面向对象的三大特性(封装,继承,多态)大多少人都应该知道。前两个的话比较容易理解。本文主要说一下面向对象中的多态。 什么是多态? 1,重载 例如: 1 public void Animal() 2 { 3 Console.WriteLine("睡觉"); 4 } 5 public void Animal(int time) 6 { 7 Console.WriteLine("{0}点睡觉", time);
8 } 2,重写 3,虚方法 什么是虚方法? 1 class Animal 2 { 3 public virtual void
EatFood() 4 { 5 Console.WriteLine("吃东西"); 6 }
7 } 虚方法可以被直接调用,如: 1 Animal a = new Animal(); 2 a.EatFood(); 输出的是:
虚方法被子类重写,如: 1 class Bird:Animal 2 { 3 public override void EatFood() 4 { 5 Console.WriteLine("鸟吃虫子"); 6 } 7 }
虚方法与抽象方法的区别:因为抽象类无法被实例化,抽象方法无法被调用,也就是说抽象方法永远不可能被实现。 应用场景: 1 public abstract class Phone 2 { 3 //手机芯片 4 public string Chip { get; set; } = "chip"; 5 6 //手机屏幕 7 public string Screen { get; set; } 8 9 //主板 10 public string Mainboard { get; set; } 11 12 //生产手机方法 13 public abstract string Production(); 14 } 15 16 //苹果手机 17 public class Iphone: Phone 18 { 19 public override string Production() 20 { 21 Console.WriteLine("开始生产苹果手机"); 22 return Chip + Screen + Mainboard; 23 } 24 } 25 26 //OPPO 27 public class OppOphone: Phone 28 { 29 public override string Production() 30 { 31 Console.WriteLine("开始生产OPPO手机"); 32 return Chip + Screen + Mainboard; 33 } 34 } 35 36 //华为 37 public class HuaweiPhone: Phone 38 { 39 //华为手机有红外线 40 public string InfraredRay { get; set; } 41 42 public override string Production() 43 { 44 Console.WriteLine("开始生产华为手机"); 45 return Chip + Screen + Mainboard + InfraredRay; 46 } 47 } 那么现在要生产苹果和华为手机: 1 static void Main(string[] args) 2 { 3 //生产苹果手机 4 Iphone iphone = new Iphone() { Screen = "苹果屏幕", Mainboard = "苹果主板" }; 5 Console.WriteLine(iphone.Production()); 6 7 //生产华为手机 8 HuaweiPhone huawei = new HuaweiPhone() { Screen = "华为屏幕", Mainboard = "华为主板", InfraredRay = "红外线" }; 9 Console.WriteLine(huawei.Production()); 10 Console.ReadKey(); 11 } 执行输出结果: 开始生产苹果手机 chip苹果屏幕苹果主板 开始生产华为手机 chip华为屏幕华为主板红外线 我们可以看到 iphone 对象和 huawei 对象都执行了同一个方法 Production 产生了不同的结果。还记得多态的定义吗?不同的对象对同一操作产生不同的执行结果。没错,这就是多态。多态的作用:把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。 该文章在 2021/1/29 21:39:45 编辑过 |
关键字查询
相关文章
正在查询... |