C#中的抽象类和接口

定义一个类时,通常需要定义一些方法来描述这个类的行为特征,但比如定义动物类时,叫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{}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值