继承与多态的锦集

继承

首先我们了解一下继承的作用:移除类的冗余代码

下面是代码展示:

我们先建出一个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 返回类型 方法名()

{

  //方法名

}

更多详情请关注 http://www.cnblogs.com/baixingqiang/
原文地址:https://www.cnblogs.com/baixingqiang/p/5374888.html