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 返回类型 方法名()

    {

      //方法名

    }

    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    普林斯顿《算法》笔记(二)
    集成学习之Boosting —— AdaBoost原理
    Bagging与方差
    js中的深复制与浅复制
    Javascript的异步与单线程
    实现Vue的双向绑定
    什么是mvvm设计模式
    什么是虚拟DOM
    vue源码实现的整体流程解析
    Java基础常见英语词汇
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5374888.html
Copyright © 2011-2022 走看看