广告
返回顶部
首页 > 资讯 > 精选 >C#接口、抽象类、抽象方法和虚方法的区别是什么
  • 931
分享到

C#接口、抽象类、抽象方法和虚方法的区别是什么

2023-06-17 12:06:43 931人浏览 泡泡鱼
摘要

C#接口、抽象类、抽象方法和虚方法的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#抽象类和接口孩子间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,

C#接口、抽象类、抽象方法和虚方法的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

C#抽象类接口孩子间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于抽象类和接口的选择显得比较随意。其实,两者之间还是有很大区别的。

首先说一下接口与抽象类的异同:

相同点:

他们都不能实例化自己,也就是说都是用来被继承的。

抽象类中的抽象方法和接口方法一样,都不能有方法体

不同点:

抽象类里可以有字段,接口中不能有字段.

抽象类中的普通方法可以有方法体,而接口方法没有方法体。

接口中的方法不能有访问修饰符,抽象类中的抽象方法被继承,需要override重写 .

接口更像是一种规范,一种约束。

一个子类只能继承一个抽象类,但却可以继承多个接口。

接下来是抽象方法和虚方法的异同:

其实可以把抽象方法看做是没有方法体的虚方法。

相同点:

抽象方法和虚方法都可以被重写。

不同点

abstract 和virtual的关键字不同

抽象方法一定没有方法体,而虚方法可以有方法体。

下面写个例子说明一下:

/// <summary>  /// 一个手机的抽象类  /// </summary>  public abstract class Mobilephone   {  private string _loGo;  public string Logo  {  get { return _logo; }  set { _logo = value; }  }  public abstract void Call();  public virtual void Callagain()   {  Console.WriteLine("我再打一个电话");  }  }  /// <summary>  /// 定义一个实体类,继承了一个抽象类及多个接口  /// </summary>  public class Nokia :Mobilephone,IClock,Ilistenmusic  {  public override void Call()  {  Console.WriteLine("NOKIA打电话没问题");  }  public void clock()  {  Console.WriteLine("NOKIA的手机也有闹钟功能");  }  public void listenmusic()  {  Console.WriteLine("NOKIA的手机还能听歌");  }  public override void Callagain()   {  Console.WriteLine("算了,还是不打了");  }  }  /// <summary>  /// 下面定义了两个接口,为了说明可以继承多个接口  /// </summary>  public interface Ilistenmusic   {  void listenmusic();  }  public interface IClock   {  void clock();  }

在补充一个小例子,

这里有到很有意思的面试题,说名了new关键字和override的区别:

class Program   {   static void Main(string[] args)   {   B5 b5 = new B5();   b5.MethodB();   }   }   public class A5   {   public virtual void MethodA()   {   Console.WriteLine("A5.MethodA");   Console.Read();   }   public virtual void MethodB()   {   MethodA();   }   }   public class B5 :A5   {   public new void MethodA()   {   Console.WriteLine("B5.MethodA");   Console.ReadLine();   }   }   class Program  {  static void Main(string[] args)  {  B5 b5 = new B5();  b5.MethodB();  }  }  public class A5  {  public virtual void MethodA()  {  Console.WriteLine("A5.MethodA");  Console.Read();  }  public virtual void MethodB()  {  MethodA();  }  }  public class B5 :A5  {  public new void MethodA()   {  Console.WriteLine("B5.MethodA");  Console.ReadLine();  }  }

最后的答案是:"A5.MethodA"

看完上述内容,你们掌握C#接口、抽象类、抽象方法和虚方法的区别是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: C#接口、抽象类、抽象方法和虚方法的区别是什么

本文链接: https://www.lsjlt.com/news/289131.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#接口、抽象类、抽象方法和虚方法的区别是什么
    C#接口、抽象类、抽象方法和虚方法的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#抽象类和接口孩子间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,...
    99+
    2023-06-17
  • C#抽象类和接口的区别
    这篇文章主要介绍“C#抽象类和接口的区别”,在日常操作中,相信很多人在C#抽象类和接口的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#抽象类和接口的区别”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-18
  • 什么是php抽象类和抽象方法
    这篇文章主要介绍“什么是php抽象类和抽象方法”,在日常操作中,相信很多人在什么是php抽象类和抽象方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是php抽象类和抽象方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • C#中抽象类和接口的区别是什么
    本篇文章给大家分享的是有关C#中抽象类和接口的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、抽象类抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;...
    99+
    2023-06-17
  • java抽象类和接口的区别是什么
    这篇文章主要介绍“java抽象类和接口的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java抽象类和接口的区别是什么”文章能帮助大家解决问题。区别抽象类和子类是is的关系,接口是like...
    99+
    2023-06-30
  • C#中抽象方法与虚方法的区别有哪些
    这篇“C#中抽象方法与虚方法的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中抽象方法与虚方法的区别有哪些”文...
    99+
    2023-07-05
  • Java中抽象类和接口的区别是什么
    本篇内容介绍了“Java中抽象类和接口的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Java语言中, abstract cla...
    99+
    2023-06-17
  • php抽象类和接口有什么区别
    本篇文章给大家分享的是有关php抽象类和接口有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。区别:对接口的使用是通过关键字implements。对抽象类的使用是通过关键...
    99+
    2023-06-15
  • java接口和抽象类有什么区别
    Java接口和抽象类都是用来实现多态性的机制,但是它们有一些重要的区别:1. 实现方式:接口是通过实现关键字"implements"...
    99+
    2023-08-15
    java
  • 知道java抽象类与抽象方法是什么吗?
    java抽象类与抽象方法是什么?在类的继承中,如果一个个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实例,这样的类叫做抽象类;一般当我们设计一个...
    99+
    2016-03-20
    java教程 java 抽象类 抽象方法
  • java中抽象类和接口有什么区别?
    在java中抽象类和接口都是用于实现抽象的,那么它们之间有什么区别?下面本篇文章就来给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。抽象类抽象类是用来捕捉子类的通用特性,即共同点的;比如:汽车、自行车、电瓶车...
    99+
    2021-09-13
    java教程 java 抽象 接口
  • Java中接口与抽象类的区别是什么
    本篇文章为大家展示了Java中接口与抽象类的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体...
    99+
    2023-05-31
    java 别是 ava
  • Java不同版本接口语法和抽象类与接口的区别是什么
    本文小编为大家详细介绍“Java不同版本接口语法和抽象类与接口的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java不同版本接口语法和抽象类与接口的区别是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-06-29
  • 在java中接口和抽象类有什么区别
    java中接口和抽象类的区别有:接口是公开的,不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的。接口强调特定功能的实现,而抽象类强调所属关系。抽象类的子类使用extends来继承,而接口必须使用implements来实现接口。抽...
    99+
    2022-10-24
  • C#中多态性学习/虚方法/抽象方法和接口怎么使用
    这篇文章主要介绍了C#中多态性学习/虚方法/抽象方法和接口怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中多态性学习/虚方法/抽象方法和接口怎么使用文章都会有所收获,下面我们一起来看看吧。1. 多态...
    99+
    2023-07-05
  • java中的接口与抽象类有什么区别
    java中的接口与抽象类有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 中接口和抽象类的区别与对比接口和抽象类的概念不一样。 接口是对动作的抽象,抽象类是对根...
    99+
    2023-05-31
    java ava
  • Java中的抽象类和接口的两大区别分别是什么
    这篇文章给大家介绍Java中的抽象类和接口的两大区别分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。抽象类和接口有什么区别什么情况下使用抽象类什么情况下使用接口抽象类和接口的不同:抽象函数为带有abstract...
    99+
    2023-06-02
  • Java8中的接口和抽象类到底有什么区别
    本篇内容主要讲解“Java8中的接口和抽象类到底有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java8中的接口和抽象类到底有什么区别”吧!区别1:首先抽象类是一个“类”,而接口只是一...
    99+
    2023-06-16
  • java中抽象类与普通类、接口的区别分别是什么
    抽象类:一个类中有抽象方法,这个类就变成了抽象类。抽象类中class的前面必须有abstract修饰符。抽象类中可以有普通方法,也可以有抽象方法,而抽象方法的个数可以是0个,也可以是多个。子类继承父类,必须重写全部的抽象方法,除非这个类也变...
    99+
    2015-07-03
    java入门 java 抽象类 普通类 接口 区别
  • Java详细讲解不同版本的接口语法和抽象类与接口的区别
    目录什么是接口?接口的语法: (JDK7.0)接口的语法: (JDK8.0)接口的语法: (JDK9.0)—(私有方法)接口的分类常量接口:空接口:函数式接口:什么是接口...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作