C#中类与接口的区别个人总结

 更新时间:2015年06月16日 10:32:17   投稿:junjie  
这篇文章主要介绍了C#中类与接口的区别个人总结,本文讲解了类与接口的区别、接口的用处主要体现在下面几个方面、一些接口的疑问等内容,需要的朋友可以参考下

一.类与接口的区别

类:描述了一个实体,包括实体的状态,也包括实体可能发出的动作。

接口:定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。

1.接口与类区别:

(1)接口有点象一个规范、一个协议,是一个抽象的概念;

(2)而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。

(3)从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。

2.接口与抽象类的区别:

(1)A class can implement any number of interfaces but can subclass at most one abstract class.

(2)An abstract class can have nonabstract methods, which are usually instance of the TEMPLATE METHOD pattern. All the methods of an interface are abstract,

whether or not this declaration is explicit.

(3)An abstract class can declare instance variable that its subclass inherit. An interface cannot declare instance variables, although it can establish static final fields.

(4)An abstract class can define constructors, an interface cannot.

(5)An abstract class can have methods whose visibility is protected, private, or none(package);every method in an interface must be public.

(6)An abstract class inherits form Object, including such method as clone() and equals().

二. 接口的用处主要体现在下面几个方面:

(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。

(2)通过接口可以指明多个类需要实现的方法。

(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

三.一些接口的疑问:

1、从书中看到的是java程序的接口中只定义了常量及空方法,空的方法有什么用呢,还要在类中写方法体,那还要接口干什么。

答:接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。

你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么?

2、一个程序中写了2个接口,并在同一个类中写方法体,这与多继承有什么关系。

答:一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。

这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。

3、包中那些已定义的接口,怎么知道那里面定义了什么方法。

答:接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了。

相关文章

  • C#实现剪切板功能

    C#实现剪切板功能

    这篇文章主要为大家详细介绍了C#实现剪切板功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C#数据结构之队列(Quene)实例详解

    C#数据结构之队列(Quene)实例详解

    这篇文章主要介绍了C#数据结构之队列(Quene),结合实例形式较为详细的讲述了队列的功能、原理与C#实现队列的相关技巧,需要的朋友可以参考下
    2015-11-11
  • C#实现IDisposable接口释放非托管资源

    C#实现IDisposable接口释放非托管资源

    这篇文章主要为大家介绍了C#实现IDisposable接口释放非托管资源,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • C#实现Socket服务器及多客户端连接的方式

    C#实现Socket服务器及多客户端连接的方式

    这篇文章介绍了C#实现Socket服务器及多客户端连接的方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C#中String.PadRight方法的具体使用

    C#中String.PadRight方法的具体使用

    本文主要介绍了C#中String.PadRight方法的具体使用, 返回一个指定长度的新字符串,其中在当前字符串的结尾填充空格或指定的Unicode字符,下面就来详细的了解一下
    2024-01-01
  • 基于C#对用户密码使用MD5加密与解密

    基于C#对用户密码使用MD5加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式。本文总结了通用的算法并结合了自己的一点小经验,分享给大家
    2015-12-12
  • C#实现洗牌游戏实例

    C#实现洗牌游戏实例

    这篇文章主要介绍了C#实现洗牌游戏实例,对于数据结构与算法的学习有不错的借鉴参考作用,需要的朋友可以参考下
    2014-08-08
  • C#导出生成excel文件的方法小结(xml,html方式)

    C#导出生成excel文件的方法小结(xml,html方式)

    C#导出生成excel文件的方法小结(xml,html方式)。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • C# PropertyInfo类案例详解

    C# PropertyInfo类案例详解

    这篇文章主要介绍了C# PropertyInfo类案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C# Winfom 中ListBox的简单用法详解

    C# Winfom 中ListBox的简单用法详解

    这篇文章主要介绍了C# Winfom 中ListBox的简单用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论