博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽象类和开闭原则
阅读量:4461 次
发布时间:2019-06-08

本文共 1903 字,大约阅读时间需要 6 分钟。

public class Vehicle    {        public void Stop() {            Console.WriteLine("Stopped");        }        ///         /// 这不符合开闭原则        ///         ///         public void Run(string type)        {            if(type == "car")            {                Console.WriteLine("Car is running");            }            else if (type == "Truck")            {                Console.WriteLine("Truck is running");            }        }    }    public class Truck:Vehicle {        public void Run()        {            Console.WriteLine("Truck is running");        }    }    public class Car:Vehicle    {        public void Run() {            Console.WriteLine("Car is running");        }    }
public class Vehicle    {        public void Stop() {            Console.WriteLine("Stopped");        }              public virtual void Run()        {            Console.WriteLine("Vehicle is running");         }    }    public class Truck:Vehicle {        public override void Run()        {            Console.WriteLine("Truck is running");        }    }    public class Car:Vehicle    {        public override void Run()        {            Console.WriteLine("Car is running");        }    }

但是我们发现Vehicle这个类永远不会去调用run这个方法因为不符合逻辑也很模糊

abstract public class Vehicle    {        public void Stop()        {            Console.WriteLine("Stopped");        }        public abstract void Run();    }    public class Truck : Vehicle    {        public override void Run()        {            Console.WriteLine("Truck is running");        }    }    public class Car : Vehicle    {        public override void Run()        {            Console.WriteLine("Car is running");        }    }    public class RaceCar : Vehicle    {        public override void Run()        {            Console.WriteLine("RaceCar is running");        }    }

添加赛车类不会修改原本的类,之需要修改原本的类就可以了

 

转载于:https://www.cnblogs.com/-alvin/p/10925452.html

你可能感兴趣的文章
Android无法删除项目+导入项目报错
查看>>
【python】获取网页中中文内容并分词
查看>>
每周进度条(第14周)
查看>>
驱动使用的一致性
查看>>
一起搞懂PureMVC(二)
查看>>
poj 2349(最小生成树应用)
查看>>
在输入框内触发移动到特点区域事件(也可换成点击事件)
查看>>
拜师鸟哥之linux学习体会(13)——linux账号管理与ACL权限设定
查看>>
Shell编程-条件测试 | 基础篇
查看>>
[Spring Boot Reference Guide] 读书笔记一 Getting Started
查看>>
AngularJs学习笔记1——总体介绍
查看>>
C语言第十二讲,文件操作.
查看>>
绝对定位和相对定位
查看>>
处女座的测验(一)
查看>>
实习第二天——学习mac终端命令(unix命令)和git代码管理
查看>>
初识redis
查看>>
微信支付
查看>>
2018、
查看>>
iOS开发拓展篇—CoreLocation定位服务
查看>>
吴裕雄--天生自然 高等数学学习:含参变量的积分
查看>>