最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C#用new和override來實現抽象類的重寫區(qū)別

 更新時間:2017年02月11日 11:35:29   作者:葉丶梓軒  
本篇文章主要介紹了詳解C#用new和override來實現抽象類的重寫區(qū)別,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。

一,抽象的實現

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Virtualdemo
{
  class Program
  {
    static void Main(string[] args)
    {//BClass A = new BClass(); 抽象類無法被實例
      Class1 c = new Class1();
      BClass c2 = c;
      c2.MethodA();
      c.MethodA();
      c2.MethodB();
      c.MethodB();
      c2.MethodC();
      c.MethodC();
      Console.ReadKey();
    }
  }
  abstract class BClass  //抽象類無法被實例
  {
    public virtual void MethodA() { Console.WriteLine("BClassA"); }
    public virtual void MethodB() { Console.WriteLine("BClassB"); }
    public virtual void MethodC() { Console.WriteLine("BClassC"); }
  }
  class Class1 : BClass
  {
    public void MethodA() { Console.WriteLine("MethodA"); }//如果一個虛函數 在子類中沒有通過override關鍵字,那么這個方法就沒有被重寫,而是被隱藏了
    public override void MethodB() { Console.WriteLine("MethodB"); }
    public override void MethodC() { base.MethodC(); }
  }
}

從上圖得出的結果是:

綜上:抽象類的虛方法需要被重寫,那問題來了重寫有兩種方式,new和override又有什么區(qū)別

二,new和override重寫的區(qū)別:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Virtualdemo
{
  class Program
  {
    static void Main(string[] args)
    {
      Teacher t = new Teacher();
      Student stu = t;
      stu.Exam();
      stu.Say();
      t.Say();
      Console.ReadKey();
    }
  }
  public abstract class Student
  {
    public virtual void Exam()
    {
      Console.WriteLine("學生都要考試");
    }
    public void Say()
    {
      Console.WriteLine("我是學生");
    }
  }
  public class Teacher : Student
  {
    public override void Exam()
    {
      Console.WriteLine("老師不用考試");
    }
    //public override void Say() //報錯,提示沒有virtual,無法被重寫
    //{
    //  Console.WriteLine("我是老師");
    //}
    public new void Say()
    {
      Console.WriteLine("我是老師");
    }
  }
}

結果顯示為:

綜上總結:

1、如果基類沒有定義虛方法,那子類只能使用new,而不能使用override

2、基類有沒有定義虛方法,子類都可以使用new

3、子類使用new并不叫重寫,而是子類新創(chuàng)建一個方法,只是新創(chuàng)建的這個方法剛好跟基類中的方法同名

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • c# wpf使用GMap.NET類庫,實現地圖軌跡回放

    c# wpf使用GMap.NET類庫,實現地圖軌跡回放

    這篇文章主要介紹了c# wpf使用GMap.NET類庫,實現地圖軌跡回放的方法,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#?wpf利用附加屬性實現界面上定義裝飾器

    C#?wpf利用附加屬性實現界面上定義裝飾器

    裝飾器是wpf中可以浮在控件上面的一種組件,我們通常可以用來實現一些諸如控件拖動點、提示框、自定義鼠標等界面功能。本文主要是利用附加屬性實現界面上定義裝飾器,需要的可以參考下
    2022-12-12
  • C#實現洗牌算法

    C#實現洗牌算法

    洗牌算法的要求是這樣的:將N個數亂序后輸出.由于和撲克牌的洗牌過程比較相似所以我也就稱為洗牌算法了.很多地方都不自覺的需要這個算法的支持.也可以將這個算法擴展為從N個數中取出M個不重復的數(0<M<=N).今天我們看下如何用C#來實現
    2015-03-03
  • C#調用CMD命令實例

    C#調用CMD命令實例

    這篇文章主要介紹了C#調用CMD命令實例本文只是給出一個比較簡單的、入門級的例子,更多高級的操作技巧請參閱相關文章,需要的朋友可以參考下
    2014-08-08
  • C#中Write()和WriteLine()的區(qū)別分析

    C#中Write()和WriteLine()的區(qū)別分析

    這篇文章主要介紹了C#中Write()和WriteLine()的區(qū)別分析,需要的朋友可以參考下
    2020-11-11
  • C# 6.0的屬性(Property)的語法與初始值詳解

    C# 6.0的屬性(Property)的語法與初始值詳解

    下面小編就為大家?guī)硪黄狢# 6.0的屬性(Property)的語法與初始值詳解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • C#使用Win2D在UWP程序中實現2D繪圖

    C#使用Win2D在UWP程序中實現2D繪圖

    這篇文章介紹了C#使用Win2D在UWP程序中實現2D繪圖的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#程序中session的基本設置示例及清除session的方法

    C#程序中session的基本設置示例及清除session的方法

    這篇文章主要介紹了C#程序中session的基本設置示例及清除session的方法,是C#入門學習中的基礎知識,需要的朋友可以參考下
    2016-04-04
  • c# 實現計時器功能

    c# 實現計時器功能

    這篇文章主要介紹了c# 實現計時器功能的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#跨PC遠程調用程序并顯示UI界面

    C#跨PC遠程調用程序并顯示UI界面

    這篇文章主要為大家介紹了使用C#跨PC遠程調用程序并顯示UI界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論

东阿县| 宁国市| 呈贡县| 宜都市| 闵行区| 获嘉县| 清丰县| 郁南县| 渝北区| 藁城市| 武安市| 汾西县| 宜兰县| 垣曲县| 探索| 乌苏市| 环江| 瑞丽市| 楚雄市| 台北县| 宣汉县| 仁寿县| 南昌市| 常州市| 玉龙| 江门市| 宣城市| 麦盖提县| 疏附县| 宁陕县| 商城县| 桃园市| 闽清县| 南华县| 江阴市| 甘谷县| 南阳市| 凤城市| 积石山| 北安市| 楚雄市|