继承
首先我们了解一下继承的作用:移除类的冗余代码
下面是代码展示:
我们先建出一个main函数,一个父类(Exec)和两个子类(PM,CM)
public class Exec { public int Id { get; set; }//编号 public string Name { get; set; }//姓名 public int Age { get; set; }//年龄 public Exec()//无参构造 { } public Exec(int id,string name,int age)//有参构造 { this.Id = id; this.Name = name; this.Age = age; } public void say()//创建say()方法 { Console.WriteLine("我是父类的say方法,我是{0},我{1岁了}"); } }
public class CM:Exec { public CM() { } public CM(int id,string name,int age):base(id,name,age) //base(id,name,age)调用父类的带参构造 {
} public void say() { Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了", Name, Age); } }
public class PM:Exec { public PM() { } public PM(int id,string name,int age):base(id,name,age) { } public void say() { Console.WriteLine("我是父类的say方法,我是{0},我{1}岁了",Name,Age); } }
class Program { static void Main(string[] args) { PM pm = new PM(001,"经理",45);//创建一个经理对象 pm.say();//调用PM()子类的say()方法 CM cm = new CM(002,"员工",25);//创建一个员工对象 cm.say();//调用CM()子类的say()方法 Console.ReadKey();//让屏幕停留 } }
完成效果图
多态
多态的作用:解决继承带来的问题
我们先通过一段代码来了解一下多态的使用,首先我们要创建出main函数,一个父类(person),三个子类(Korea,Chinese,American)
public class Person { public int age; public virtual void Hello() { } }
public class American:Person { public override void Hello() { Console.WriteLine("Hello"); } }
public class Chinese:Person { public override void Hello() { Console.WriteLine("你好"); } }
public class Korea:Person { public override void Hello() { base.age=12; Console.WriteLine("金喜善打招呼"); } }
class Program { static void Main(string[] args) { Chinese chinese=new Chinese(); American american=new American(); Korea korea=new Korea(); //多态的调用 Person[] pers= { chinese,american,korea }; foreach (Person item in pers)//循环遍历 { item.Hello(); } Console.ReadLine(); } }
完成效果图
里面用到的override,与virtal关键字是多态里面的常用方法
virtal关键字修饰方法称为虚方法。虚方法语法如下
语法
访问修饰符 virtual 返回类型 方法名()
{
//方法体
}
override关键字来修饰的方法,称为方法的重写。虚方法可以被重写。
语法
访问修饰符 override 返回类型 方法名()
{
//方法名
}