virtual methods

后端 未结 3 508
天命终不由人
天命终不由人 2021-01-28 12:01

If I have a class named \"Parent\" for example. he has a method named \"Print\". the class \"Kid\" is derived, it has a method named

3条回答
  •  我在风中等你
    2021-01-28 12:52

    A virtual method call uses the actual type of the object to determine which method to call, while a non-virtual method uses the type of the reference.

    Say that you have:

    public class Parent {
      public void NonVirtualPrint() {}
      public virtual void VirtualPrint() {}
    }
    
    public class Kid : Parent {
      public new void NonVirtualPrint() {}
      override public void VirtualPrint() {}
    }
    

    Then:

    Parent p = new Parent();
    Parent x = new Kid();
    Kid k = new Kid();
    
    p.NonVirtualPrint(); // calls the method in Parent
    p.VirtualPrint(); // calls the method in Parent
    
    x.NonVirtualPrint(); // calls the method in Parent
    x.VirtualPrint(); // calls the method in Kid
    
    k.NonVirtualPrint(); // calls the method in Kid
    k.VirtualPrint(); // calls the method in Kid
    

提交回复
热议问题