CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

[讨论]Abstract Class 和 Interface有啥区别和联系?

楼主alpine(笨笨)2002-05-23 09:21:14 在 .NET技术 / C# 提问

讨论性质,本人给分,多多发言   :) 问题点数:100、回复次数:15Top

1 楼duanfeng(段玉)回复于 2002-05-23 09:42:36 得分 80

请认真理解:  
  Abstract   Class是   "is-a"关系  
  interface表示的是"like-a"关系Top

2 楼wenzm(魔术师)回复于 2002-05-23 09:47:41 得分 20

我也想知道    
   
    因为他们都是不允许实例化的  
   
    但Interface中不允许实现而只能声明一个方法、属性等  
  而在Abstract   Class中切可以具体的实现  
  还有  
     
    一个Abstract   Class   中定义一个方法或属性时,方法或属性定义或不定义为Abstract又有什么区别呢!?Top

3 楼alpine(笨笨)回复于 2002-05-23 09:48:10 得分 0

太深奥了,说通俗点儿吧Top

4 楼alpine(笨笨)回复于 2002-05-23 09:48:44 得分 0

太深奥了,说通俗点儿吧Top

5 楼wenzm(魔术师)回复于 2002-05-23 09:50:40 得分 0

duanfeng(段玉)说的也对,本来,Interface主要是面向设计的,更多的注重的时对象的结构,而Class好象更多的是注重实现(功能)  
  但如果是Abstract   Class   的话,我觉得除了它不能和Interface一样多重继承一样,好象它们又很相似了!疑惑Top

6 楼duanfeng(段玉)回复于 2002-05-23 09:54:58 得分 0

abstract   class表示一种继承关系,  
  而继承关系在本质上是"is-a"关系。  
   
  Interface定义的是行为,  
  所以概念描述可以通过interface方式定义。  
   
  还要注意它们表现的概念不同.Top

7 楼duanfeng(段玉)回复于 2002-05-23 09:57:09 得分 0

to   alpine(笨笨)   ,明白了没有,  
  多思考一下.^-^  
  Top

8 楼alpine(笨笨)回复于 2002-05-23 10:02:08 得分 0

是否是在所有的情况下,都只有唯一的选择?即无论如何abstract   class和interface都不能相互替代?  
  如果是这样的,那么我们是否可以穷举所有可能情况,然后寻找它们的答案呢Top

9 楼duanfeng(段玉)回复于 2002-05-23 10:06:55 得分 0

to   alpine(笨笨),  
  我讲了这么多都没有明白?  
  哪还是请多思考一下.Top

10 楼wenzm(魔术师)回复于 2002-05-23 10:19:19 得分 0

 
   只要有一个方式或属性是abstract的话,这个Class就必须定义为abstract    
    abstract Class允许定义和实现非abstract的方法,而abstract方法则必须在其子类中全部override实现! abstract Class也可以定义成员变量,起到保护变量的作用。而且abstract Class子类的实例中也是可以可以访问其父类(即abstract   Class)中的Public方法或属性的  
   
  而interface   中只能定义方法属性吧,而且不允许加级别修饰符(应该是所有的都默认为public   吧)  
   
   临散的知道一些,也理不清楚,也说不到本质  
   
   
     
  Top

11 楼xd_yang(Robert)回复于 2002-05-23 10:20:01 得分 0

我觉得     duanfeng(段玉)   已经说得很明白了Top

12 楼alpine(笨笨)回复于 2002-05-23 10:20:10 得分 0

首先感谢duanfeng(段玉)的精辟结论  
  但是像我一样笨笨的人恐怕还有很多,如果再能给出几个简单的例子就更好了   :)  
  多谢多谢Top

13 楼wenzm(魔术师)回复于 2002-05-23 10:24:04 得分 0

Class是   "is-a"关系  
  interface表示的是"like-a"关系  
   
  所以interface好象跟多的是描述对间的关系,  
  而Class因为是“is_a"所以更多的是来表达/描述对象是什么? 所以除了  
  和interface一样定义外,还可以实现它自己的特性!  
  Top

14 楼duanfeng(段玉)回复于 2002-05-23 10:33:08 得分 0

如一个新型汽车,有人工智能功能:  
  可以这样描述:  
   
  abstract   class   Car  
  {  
      public   abstract   void   drive()    
      ...  
  }  
   
  interface   AI{  
      public   void   uses_AI()      
  }  
   
  则  
  NewCar   :   Car   interface   AI  
  {  
      public   void   uses_AI()  
      public   override   void   drive()    
  }  
   
  Top

15 楼alpine(笨笨)回复于 2002-05-23 10:41:26 得分 0

多谢多谢,酱子就生动多了   :)  
  我再理解理解  
   
  是否同意,这两者是不可以相互替代的呢?  
  而他们的区别更多的是语意上面的呢?Top

16 楼duanfeng(段玉)回复于 2002-05-23 10:43:22 得分 0

to   alpine(笨笨)   ,  
  我感觉你还是应好好思考一下再来问,  
  可能更加成熟一些.Top

17 楼alpine(笨笨)回复于 2002-05-23 17:12:58 得分 0

多谢多谢,下午看了一下inside   c#和programming   C#  
  得到了一些东西。  
  今天没时间了,改天专门写一篇文章吧  
  其实class和interface的区别是OO的概念问题了Top

相关问题

  • abstract class和interface有何区别啊?
  • abstract class和interface的区别在哪里?
  • abstract class和interface有什么区别?
  • 请问class,abstract class,interface的区别和联系.
  • 关于abstract interface接口,跟interface有什么区别?
  • Class 与 JavaBean的区别
  • 请教interface与abstract class公用的问题
  • java bean和java class的区别??
  • template <typename a> 与template <class t>有什么区别?
  • #include "Myclass.h" 与 class CMyclass 有什么区别?

关键词

  • c#
  • 属性
  • ai
  • abstract
  • 定义
  • 多谢
  • duanfeng
  • 笨笨
  • interface
  • 区别

得分解答快速导航

  • 帖主:alpine
  • duanfeng
  • wenzm

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo