虚方法和抽象方法的应用

    技术2022-05-20  53

    1,虚方法  用Virtual修饰的方法叫虚方法  子类会继承父类中的虚方法并且可以正常使用,在子类中也可以重写(override)父类中的虚方法

    2,

        抽象类在定义一种蓝图,把约束所有子类都有该方法(名字相同,但实现动作不同)所以子类对同一个方法的实现都不同,可以在父类中定义该方法为抽象方法。

         抽象方法  用abstract修饰的方法叫抽象方法 抽象方法没有实现只有定义

         抽象类    用abstract修饰的类叫抽象类  抽象类中可以包含抽象方法,也可以包含非抽象方法 但抽象方法一定要写在抽象类中 抽象类不能被实例化

         如果一个非抽象的类继承自一个抽象类,那么这个子类必须实现父类的抽象方法。

      3,索引器的定义

         修饰符 返回值类型 this【参数】{get{}set{}}

      1. 例子:

     虚方法的举例说明 例如在在animal类中有一个虚方法public Virtual void breathway(Console.writeline("用肺呼吸"))有两个类   继 承annimal这个类

    定义个fish类

    class animal

    {

      public Virtual void breathway(Console.writeline("用肺呼吸"))

    }

    class fish:animal

    {

     

    }

    定义个dog类

    class dog:animal

    {

        public override void breathway{ Console.writeline("用腮呼吸");}

    }

    在主程序中

    static void Main(string[] args)        {   fish f=new fish();

                 f.breathway()'

                 dog d=new dog();

                 d.breathway();

            }

    在这个例子中 dog类直接调用annimal类中的breathway()方法但是fish类中 通过override 重写了breathway()方法所以会调用fish类中的breathway()方法

     

    2:抽象类的例子

     抽象类

    有一个集合,里面有小孩,中年人,他们走路的方式都不相同,小孩(显示):爬着走  中年人:直立行走 从集合中取出各个对象,并调用其走的方法。试编程实现

    首先定义个people 老年人 小孩类和中年人类都继承people类

    abstract class people

    {

            string people;//人的类型

            public string People        {            get { return people; }            set { people = value; }        }        private string peopleway;//走路的方式

            public string Peopleway        {            get { return peopleway; }            set { peopleway = value; }        }

       public  void abstract walkway();

    }

    class youngpeople:people

    {

       public void override walkway()

    {

       Console.writeline("我是{0},我{1}", this.People, this.Peopleway);

    }

    }

    class zhongpeople:people

    {

    public void override walkway()

    {

    Console.writeline("我是{0},我{1}", this.People, this.Peopleway);

    }

     

    }

     static void Main(string[] args)        {

             youngpeople yong = new youngpeople { People = "年轻人", Peopleway = "爬着走" };            zhongpeople zhong = new zhongpeople { People = "中年人", Peopleway = "直立行走" };            List<person> list = new List<person>();            list.Add(yong);            list.Add(zhong);                        foreach (person p in list)            {                p.walkway();            }            Console.ReadLine();

    }

     

     

     


    最新回复(0)