在面向对象当中继承是非常重要的,也是面向对象的三大特性之一(继承、封装、多态),今天我们来揭开他的神秘面纱。
话不多说,我们上菜。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
-
- /**
- * 假设我们公司有两种程序员:
- * java程序员指的是用java语法写程序的程序员,用Jpro这个类表示;
- * C#程序员指的是用C#语法写程序的程序员,用Cpro这个类来表示。
- * 每个类都有一个WriteCode()方法。
- * 都属于程序员,用Programmer这个类表示。
- * 现在公司来了一个项目,要求派某个程序员写一个程序。
- */
- namespace inheritApplication
- {
- //程序员类(基类)
- class Programmer
- {
- public string name = "我是程序员";
- }
- //java程序员类
- class Jpro
- {
- public string name = "java程序员";
- public string language = "我用java语法写代码";
- }
- //C程序员类
- class Cpro
- {
- public string name = "C#程序员";
- public string language = "我用C#语法写代码";
- }
- //编写项目类
- class Pro : Programmer //继承基类
- {
- public void WriteProgram(Jpro program) //继承java程序员类
- {
- Console.WriteLine("" + program.name + ":" + name + "," + program.language + "");
- }
- public void WriteProgram(Cpro program)
- {
- Console.WriteLine("" + program.name + ":" + name + "," + program.language + "");
- }
- }
- //主程序
- class Program
- {
- static void Main(string[] args)
- {
- Pro p = new Pro();
- Jpro p1 = new Jpro();
- p.WriteProgram(p1);
- Cpro p2 = new Cpro();
- p.WriteProgram(p2);
- Console.ReadKey();
- }
- }
- }
写好代码后我们运行看看效果!
很显然看出来,公司两个程序员都继承了程序员类。
总结:
父类包含了多少内容,派生类(子类)全部接受(包括属性 字段 方法等),
可以重写覆盖,使用override重写,可以使用base调用父类中的内容。
继承可以减少代码的冗余,也为程序的修改提供了很大的方便之处。
当然,如果结合接口那就完美了,下一篇中我们将提到接口的实现。