前言:
当前朋友们对“关键字virtual”大体比较珍视,同学们都需要知道一些“关键字virtual”的相关内容。那么小编同时在网摘上网罗了一些关于“关键字virtual””的相关内容,希望朋友们能喜欢,小伙伴们快快来学习一下吧!摘要
base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。
仅允许基类访问在构造函数、实例方法或实例属性访问器中进行。
正文
创建派生类实例时调用的基类构造函数。
修改一下Material类,我们创建了两个构造,一个是无参数的,一个是初使化三个属性的。
public class Material{ public string Name { get; set; } public string Description { get; set; } //修改为保护,这时项目直接调用会出错了 protected int Qty { get; set; } public void InStock(int qty) { this.Qty += qty; } public void OutStock(int qty) { this.Qty -= qty; } public Material() { Console.WriteLine("Material 无参数构造!"); } public Material(string name, string description, int qty) { Name = name; Description = description; Qty = qty; Console.WriteLine("Material 三个参数构造!"); }}
我们修改一下Equipment类
这里我们用到了base关键字
/// <summary>/// 继承Material/// </summary>public class Equipment : Material{ public Equipment() : base() { Console.WriteLine("Equipment 无参数构造!"); } public Equipment(string brand) { Brand = brand; Console.WriteLine("Equipment 一个参数构造!"); } public Equipment(string name, string description, int qty) : base(name,description,qty) { Console.WriteLine("Equipment 三个参数构造!"); } //一个自己独有的品牌属性 public string Brand { get; set; } public void Print() { Console.WriteLine($"名称{this.Name},描述{this.Description},数量{this.Qty},品牌{this.Brand}"); }}
调用
Equipment equipment1 = new Equipment();Equipment equipment2 = new Equipment("SIEMENS");Equipment equipment3 = new Equipment("A01","Testt",10);
基类 Material 和派生类 Tool 都有为 InStock,与OutStock 的方法。 通过使用 base 关键字,可以从派生类中调用基类的 InStock,与OutStock 方法。
创建Tool类
public class Tool:Material{ public override void InStock(int qty) { base.InStock(qty); this.Qty += qty*2; } public override void OutStock(int qty) { this.Qty -= qty * 2; }}
修改Material类,增加virtual 修饰符
public virtual void InStock(int qty){ this.Qty += qty;}public virtual void OutStock(int qty){ this.Qty -= qty;}public void PrintQty(){ Console.WriteLine(this.Qty);}
调用
Tool tool = new Tool();tool.InStock(100);tool.PrintQty();
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #关键字virtual