首页 > Windows开发 > 详细

[c#]抽象类中子类方法重写的原理

时间:2020-12-08 22:27:44      阅读:37      评论:0      收藏:0      [点我收藏+]

Abstract抽象类下的子类的方法重写原理:其实就是重写方法地址

假如Transportation为一个抽象类,其下的方法有Transport,方法地址为0x1001

TrainAirplane为其子类,都有重写方法Transport

Train方法地址为0x2001Airplane方法地址为0x3001 

技术分享图片

 

 

 

在实例子类并调用其方法时,实例对象是在运行时实时修改方法地址的,而不是在编译时修改。如:

 

简单编写一个抽象类Transportation

 

public abstract class Transportation
{
  public string Type{get;set;}
  public abstract void Transport();
}

 

 

Person类中有方法:

 

public void GoHome(Transportation type)
{
  //调用抽象类中的抽象方法
  type.Transport(); }

 

 

 

然后在Main实例一个Person对象,在Person对象中调用抽象方法:

 

static void Main()
{
    Person p1 = new Person();

    //使用火车回家
    p1.GoHome(“火车”);
    p1.GoHome(new Train());//此时编译时无方法地址无改变,直到运行时修改为0x2001

    //如果改为使用飞机回家
    p1.GoHome(“飞机”);
    p1.GoHome(new Airplane());//同上,运行时修改为0x3001
}

 

[c#]抽象类中子类方法重写的原理

原文:https://www.cnblogs.com/qjns/p/14105835.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!