zoukankan      html  css  js  c++  java
  • 继承与多态

    继承

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

    下面是代码展示:

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

    {

      //方法名

    }

  • 相关阅读:
    new操作符
    delete和delete[] 的区别
    oracle查看编码以及修改编码
    C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
    error:/usr/bin/ld:skipping incompatible ./libxxxx.so when searching for lxxxx
    shell环境变量以及set,env,export的区别
    malloc/free和new/delete的区别
    form表单提交回调函数
    jQuery ajax 跨域请求
    开博咯
  • 原文地址:https://www.cnblogs.com/superws/p/5400487.html
Copyright © 2011-2022 走看看