C#中的抽象类和接口

来源:互联网 发布:朗文和牛津 知乎 编辑:程序博客网 时间:2024/05/22 10:46

定义一个类时,通常需要定义一些方法来描述这个类的行为特征,但比如定义动物类时,叫shou()方法针对每个动物不同叫声也不同,因此shou()方法无法准确的描述动物的叫声。当这种情况出现时,C#允许在定义方法时不写方法体,即抽象方法(用abstract关键字定义)

定义抽象类

  1. 抽象方法的类必为抽象类,但抽象类可以没有抽象方法。
  2. 抽象类不可以实例化,如想调用抽象类中定义的方法,则需创建子类,在其中实现抽象类的抽象方法。
abstract  class animal{

public abstract void shot()


class dog:animal{

public override void shot()

c.w("汪汪汪");

class cat:animal{

public override void shot()

c.w(“喵喵喵”);

Main(){

Dog dog =new Dog();

dog.shot();

Cat cat=new Cat();

cat.shot();

c.k();


}

子类通过override关键字实现了父类animal的抽象方法后,可以正常实例化,并通过实例化对象调用父类的shot()方法。

如果一个抽象类中的所有方法都是抽象方法,这个抽象类定义为接口。


在显示生活中,我们的电脑可以读取U盘,硬盘,和MP3,是因为他们都有一个相同的Read()方法,USB调用Read()方法方法读取。USB接口其实就是一个协议,哪些硬件遵循协议,那么插在主板上这些引发件都快可以读取出数据。
接口
使用interface关键字定义

接口定义一组成员但是不直接实现他们(在接口中定义的成员就跟我们刚刚所提到的协议很相似)

interface animal{

void cat();

void dog();

animal即为接口。

cat,dog()方法 无方法体

无访问修饰符

在接口中定义方法:

1.不能添加访问修饰符,访问权限默认都是public(我们就不能添加了,public也不能写,所以我们就直接 返回值 方法名)

2.抽象方法(接口)不能实例化——因此要定义一个子类中定义一个方法输出,在Main()中实例化并调用 实现接口中所有的方法。

3.一个类中可以实现多个接口,被实现的多个接口之间要用逗号隔开。

interface run(){}

interface fly(){}

class bird:run,fly{}

4。一个接口可以继承多个接口,接口之间用逗号隔开

interface run(){}

interface fly(){}

interface bird:run,fly{}






1 0
原创粉丝点击