您的位置:首页 > 编程语言 > C#

C# interface与abstract class区别

2014-04-09 18:19 274 查看
C# interface与abstract class区别
一、abstract class

abstract 声明抽象类抽象方法,一个类中有抽象方法,那么这个类就是抽象类了。所谓的抽象方法,就是不含主体(不提供实现方法),必须由继承者重写。因此,抽象类不可实例化,只能通过继承被子类重写。

实例代码:

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

namespace ConsoleApplication1
{
public abstract class Bus
{
public abstract void getName();
public virtual void getTypes()
{
Console.WriteLine("bus");
}
public void getID()//一般方法,若在派生类中重写,须使用new关键字
{
Console.WriteLine("沪A 00000");
}
}
public class car : Bus
{
public override void getName()
{
Console.WriteLine("奥迪");
}
public override void getTypes()
{
Console.WriteLine("car");
}
}
class Program
{

static void Main(string[] args)
{
car mycar = new car();
mycar.getName();
mycar.getTypes();
mycar.getID();
}
}
}


输出:

奥迪

car

沪A 00000

二 interface
声明接口,只提供一些方法规约,不提供任何实现;不能用public、abstract等修饰,无字段、常量,无构造函数。

示例代码:

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

namespace ConsoleApplication1
{
public interface Bus
{
void getTypes();
}
public interface plane
{
void getfunc();
}
public class car : Bus
{

public void getTypes()
{
Console.WriteLine("car");
}
public void getfunc()
{
Console.WriteLine("fly");
}
}
class Program
{

static void Main(string[] args)
{
car mycar = new car();
mycar.getTypes();
mycar.getfunc();
}
}
}


输出结果:

car

fly

三、区别

1.interface中不能有字段,而abstract class可以有;

2.interface中不能有public等修饰符,而abstract class 可以有。

3.interface 可以实现多继承
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: