虚方法和抽象方法的应用

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值