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/
  • 相关阅读:
    Interview with BOA
    Java Main Differences between HashMap HashTable and ConcurrentHashMap
    Java Main Differences between Java and C++
    LeetCode 33. Search in Rotated Sorted Array
    LeetCode 154. Find Minimum in Rotated Sorted Array II
    LeetCode 153. Find Minimum in Rotated Sorted Array
    LeetCode 75. Sort Colors
    LeetCode 31. Next Permutation
    LeetCode 60. Permutation Sequence
    LeetCode 216. Combination Sum III
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5374888.html
Copyright © 2011-2022 走看看