C#基础--虚方法与重写

作用:子类可以对父类重写,虚方法是对多态特征体现。

 1  public class Animal
 2     {
 3         public string Name { get; set; }
 4         public virtual void Eat()
 5         {
 6             Console.WriteLine("{0}正在吃草",Name);
 7         }
 8
 9     }
10     public class Sheep : Animal
11     {
12         public Sheep(){ Name = "羊"; }
13         public override void Eat()
14         {
15             base.Eat();
16             Console.WriteLine("吃草");
17
18         }
19
20     }
21
22     public class Tigger : Animal
23     {
24         public Tigger() { Name = "老虎"; }
25         public override void Eat()
26         {
27             base.Eat();
28             Console.WriteLine("老虎吃羊");
29
30         }
31     }
   Animal animal1 = new Sheep();
            Animal animal2 = new Tigger();
            animal1.Eat();
            animal2.Eat();

  

原文地址:https://www.cnblogs.com/QueryWord/p/11407124.html

时间: 2024-08-13 11:30:25

C#基础--虚方法与重写的相关文章

多态、虚方法、重写

多态: 同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体 1.需要父类同意子类可以重新编写自己的方法,virtual - 虚方法 2.子类只能重写父类允许重写的方法,只能重写虚方法,override - 重写覆盖虚方法 所有的类都可以当做父类,都可以有虚方法 Program   类 using System; using System.Collections.Generic; using System.Linq; using System.

虚方法,重写————继承、多态、面向对象!

1. this 不能直接调用 非static成员class A{static public void M1(){ Hello(); // 错误 在static成员中不能 直接调用非static成员 A a=new A(); a.Hello();}public void Hello(){ F1 =10: M1(); A.M1(); this.M1() //错误 不能调用}} 2. 静态类不能new: 静态类中不能声明非静态成员. 3.sealed 密闭类不能被继承 Fromwork 4.Paint

虚方法的重写与普通方法的隐藏的区别;抽象方法和虚方法有什么区别?

两者都可实现对基类方法的重写 ,虚方法在基类中virtual ,在派生类用override关键字修饰,而普通方法的隐藏在基类不用什么修饰符,而在派生类中用new关键字进行重写 ,我想问,它们同样是方法的重写, c#为什么会有两种方法重写方法,这样设计不是重复了呢, 这怎么理解呢? 不重复,首先如果基类里面的virtual方法被子类继承之后,用override重写之后,那么子类里面就只有一个该方法名的方法了.而另一个普通的,就是在子类里面直接通过new 来新建一个方法那叫重载(多态分为重写和重载)

虚方法与重写方法的使用

C#中的多态性在实现时主要是通过在子类(派生类)中重写基类的虚方法或函数成员来实现的,那么这里就遇到两个概念,一个是虚方法,另一个是重写方法,而这两个方法也是多态中最重要的两个概念,下面分别对它们进行讲解. 1.虚方法 虚方法就是允许被其子类重新定义的方法,在声明时,需要使用virtual修饰符. 注意: (1)virtual修饰符不能与static.abstract或者override修饰符同时使用: (2)由于虚方法不能是私有的,所以,virtual修饰符不能与private修饰符同时使用.

学习继承、重写、虚方法

对于我来说好累哦!压力好大,到现在为止我对继承只了解一点点,而虚方法与重写就更晕了,有些时候晕的头好疼哦!哎哎哎 就如我现在写的一些,都不是太懂: EG: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace p_20150423_2 { class Internowork     {//网络部   

多态,虚方法重写,抽象类,接口

简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写 子类重写父类的方法使用的是override关键字 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { public

虚方法

当类中的方法声明前加上了virtual   修饰符,我们称之为虚方法,反之为非虚.使用了virtual   修饰符后,不允许再有static,   abstract,   或override   修饰符.       示例1:带有虚方法的类       using   System   ;       public   class   DrawingBase       {       public   virtual   void   Draw(   )       {   Console.W

使用虚方法和多态来改善源代码的扩展性

-多态:(转自CSND) 通过继承,一个类可以用作多种类型:可以用作它自己的类型.任何基类型,或者在实现接口时用作任何接口类型.这称为多态性.C# 中的每种类型都是多态的.类型可用作它们自己的类型或用作 Object 实例,因为任何类型都自动将 Object当作基类型. 多态性不仅对派生类很重要,对基类也很重要.任何情况下,使用基类实际上都可能是在使用已强制转换为基类类型的派生类对象.基类的设计者可以预测到其基类中可能会在派生类中发生更改的方面.例如,表示汽车的基类可能包含这样的行为:当考虑的汽

接口 抽象类 虚方法 三者比较-1

接口 1.接口只提供方法规约,不提供方法体: 2.接口中的方法不能用关键字修饰: 3.接口里不能有接口和变量: 4.接口里的方法在子类中必须全部实现: 5.接口可以实现多重继承: 抽象类 1.抽象类可以从接口继承: 2.抽象类中的实体方法在子类中不可以重写,只可以被引用: 3.抽象类中的抽象方法不可以有方法体,抽象类中的抽象方法在子类中必须重写: 4.抽象类中的虚方法在子类中可以选择性的重写: 虚方法 1.可以在子类选择性的重写: 2.不重写也可被子类调用: 接口与抽象类的异同 1.抽象类的抽象