继承(父类为虚方法以及子类的重写)

定义父类为虚方法时需要关键字  virtual

子类重写需要关键字  override

示例代码:

//父类
   public class People
    {
        //虚方法
        //VR Virtual Reality  虚拟现实
        //AR Augmented Reality 增强现实
        public virtual void SayHello()
        {
            Console.WriteLine("父类打招呼的方法");
        }

}

//子类(重写父类方法)
  public  class Chinese:People
    {
      public override void SayHello()
      {
          Console.WriteLine("你好!");
      }
    }

//子类
    public class American:People
    {
        public override void SayHello()
        {
            Console.WriteLine("Hello");
        }
    }

public  static void Main(string[] args)
        {
          //统一调用
            List<People> list = new List<People>()
           {
            new Chinese(),
            new American()
           };

People people = new People();
            people.SayHello();
            foreach (People item in list)
            {
                item.SayHello();
            }
            Console.ReadKey();
        }

时间: 2024-11-05 13:43:34

继承(父类为虚方法以及子类的重写)的相关文章

大龙的学习笔记之“虚方法,抽象方法,重写,抽象类,接口”

虚方法:可以重写,也可以不重写,英文名:virtual 抽象方法:必须重写,必须放在抽象类中,英文名:abstract 重写:可以重写三种方法:virtual,abstract,override,英文名:override 抽象类:可以有抽象方法,也可以有非抽象方法,英文名:abstract 接口:和抽象类相似,但是里面只有未实现的方法,英文名:interface 大龙的学习笔记之"虚方法,抽象方法,重写,抽象类,接口",布布扣,bubuko.com

虚方法与两种重写方法的比较

虚方法virtual..override: 1.派生类的方法和基类的方法有相同的签名和返回类型. 2.基类的方法使用virtual标注. 3.派生类的方法使用override标注. class MyBaseClass { virtual pubilc void Print() ... } class MyDerivedClass : MyBaseClass { override pubilc void Print() ... } 注意: 1.重写和被重写的方法必须有相同的可访问性.换一种说法,被

python 子类继承父类的__init__方法

父类A class A(object): def __init__(self, name): self.name=name print "name:", self.name def getName(self): return 'A ' + self.name 子类不重写__init__,实例化子类时,会自动调用父类定义的__init__ class B(A): def getName(self): return 'B '+self.name if __name__=='__main__

子类可以继承父类的一切方法,成员变量,甚至是私有的,但是却不能够访问这些私有的成员变量和方法

1.关于私有成员变量 无论父类中的成员变量是私有的.共有的.还是其它类型的,子类都会拥有父类中的这些成员变量.但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protected.public方法(如getter.setter方法)来访问. 2.关于静态成员变量 无论父类中的成员变量是静态的.还是非静态的,子类都会拥有父类中的这些成员变量. 3.关于被子类覆盖的成员变量 无论父类中的成员变量是否被子类覆盖,子类都会拥有父类中的这些成员变量. 原文地址:https://ww

继承小试牛刀:虚方法virtual

#include<iostream>using namespace std;class Point{public:    Point(double a=0,double b=0):xx(a),yy(b){}   virtual double x(){return xx;}   virtual double y(){return yy;}private:    double xx,yy;};class t_Point :public Point{public:    t_Point(double

02-14 方法重写与虚方法调用

前一篇隐藏的实例中,由于子类隐藏了父类的同名方法,如果不进行强制转换,就无法通过父类变量直接调用子类的同名方法,哪怕父类变量引用的是子类变量. 我们希望的是每个对象“各司其职”. 为了达到这个目的,可以在父类同名方法前加关键字virtual,表明这是一个虚方法,子类可以重写此方法:即在子类同名方法前加关键字override,表明这是对父类同名方法进行了重写. 请看如下代码: 1 class Parent //父类 2 { 3 public virtual void OverrideF() //父

虚方法和抽象方法需要注意的几点

虚方法: 1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual 2.虚方法中必须有实现,哪怕是空实现---关于什么是实现,就是大括号:举个例子 public abstract void Fn1();//定义一个抽象方法public vitrual void Fn2(){  };//定义一个虚方法(那对大括号必须要有,有说明已经实现了该方法,你可以具体定义他要实现的功能,也可以什么都不写) 3.虚方法的子类可以重写,也可以不重写 关于抽象方法注意的几点:(接口通过反编译会发现实际

虚方法(virtual)和抽象方法(abstract)的区别

虚方法和抽象方法都可以供派生类重写. 虚方法必须有实现部分,抽象方法必须没有实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: class Program { static void Main(string[] args) { C c = new C(); D d = new D(); } } abstract class A { public virtual void Sleep() { } public virtual void N(); //报错,虚方法必须有实现

转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它们只能访问static数据. 它们不能以任何方式引用this 或super. 无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个对象时,并不产生sta