永发信息网

c抽象类和接口的区别

答案:1  悬赏:50  手机版
解决时间 2021-03-25 15:08
c抽象类和接口的区别
最佳答案
1抽象类

(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
(2) 抽象类不能被实例化
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
(4) 具体派生类必须覆盖基类的抽象方法
(5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。如:

using System;

public abstract class A //抽象类A
{
private int num=0;

public int Num //抽象类包含属性
{
get
{
return num;
}
set
{
num = value;
}

}

public virtual int getNum() //抽象类包含虚方法
{
return num;
}

public void setNum(int n) // //抽象类包含普通方法
{
this.num = n;
}

public abstract void E(); //类A中的抽象方法E

}

public abstract class B : A //由于类B继承了类A中的抽象方法E,所以类B也变成了抽象类
{

}

public class C : B
{
public override void E() //重写从类A继承的抽象方法。如果类B自己还定义了抽象方法,也必须重写
{
//throw new Exception("The method or operation is not implemented.");
}
}

public class Test
{
static void Main()
{
C c = new C();
c.E();
}
}

二、接 口

(1) 接口不能被实例化
(2) 接口只能包含方法声明
(3) 接口的成员包括方法、属性、索引器、事件
(4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员。如:

public delegate void EventHandler(object sender, Event e);

public interface ITest
{
//int x = 0;

int A
{
get;
set;
}

void Test();

event EventHandler Event;

int this[int index]
{
get;

set;
}
}

(5) 接口中的所有成员默认为public,因此接口中不能有private修饰符
(6) 派生类必须实现接口的所有成员
(7) 一个类可以直接实现多个接口,接口之间用逗号隔开
(8) 一个接口可以有多个父接口,实现该接口的类必须实现所有父接口中的所有成员

三、抽象类和接口
相同点:
(1) 都可以被继承
(2) 都不能被实例化
(3) 都可以包含方法声明
(4) 派生类必须实现未实现的方法
区 别:
(1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。
(2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。”
(3) 接口可以被多重实现,抽象类只能被单一继承
(4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中
(5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性
(6) 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法
(7) 接口可以用于支持回调,而继承并不具备这个特点
(8) 抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的
(9) 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
捉蜻蜓是什么季节的
蓝宝石Radeon HD6770玩极品飞车时温度上66。
卧室厕所改书房后宽度1.1米的门框做什么遮挡
唉,烦死了,愁死我了,大家看看吧,给个意见
一个男生不和你说真实的名字是什么意思?
驻村帮扶工作算不算基层工作经验
单选题之所以说鸦片战争是不可避免的,主要原
相比汉代丝绸之路宋代的对外贸易主要采取哪种
请问2梯3户,这个中间户好不好谢谢
九年级英语作文《不吃早饭的危害》
一般30块木板喷木漆要多少组漆
登陆天天快递的天宝软件,总是显示登陆验证失
宁夏对外建设总公司第八分公司在哪里啊,我有
windows10系统玩英雄联盟怎么提高fps
梦见自己闹了一盆水在那洗澡把水都洗黑了
推荐资讯
sony psp 3006的电池彻底没有电了怎么办
为什么中国人均gdp只有八千美元
泰国举办过奥运会吗
哺乳文胸牌子都有哪些?
急求一篇英语短文!!!!!急用,在线等!!!!
平常牛排应该放在保鲜里还是冷冻里
辱国败将和敢当吾的意思
没有足够磁盘是什么意思
武汉批发防晒衣的市场在哪
安徽回收啤酒瓶厂家在哪里
今天去一家公司面试 然后要培训俩个月
痛风不能吃酵母,那么超市的馒头能吃吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?