抽象类和接口

本文介绍了抽象类和接口在编程中的概念和特性。抽象类不能被实例化,可包含抽象和非抽象成员,抽象方法必须在派生类中重写。接口则规定了实现它的类必须提供特定的能力,不能实例化,方法默认为public抽象,实现接口的类必须重写其所有成员。抽象类适合用于有部分实现且部分需要派生类具体化的场景,而接口更适合定义对象间的行为规范。
摘要由CSDN通过智能技术生成

抽象类

abstract 修饰

抽象类是一种比较特殊的类

特殊性:

1 不能被实例化

2 抽象类可包含抽象方法和属性,也可以包含非抽象的成员,但抽象方法一定存在于抽象类中

3 抽象基类的方法的抽象成员必须在具体派生类中重写(override)

4 抽象类满足类的单一继承和继承传递性

public abstract class Animal
{
	public void Eat()
	{
		Console.WriteLine("吃饭");
	}
	
	public abstract void Run();
}

public class Dog:Animal
{
	public override void Run()
	{
		Console.WriteLine("跑");
	}
}

关于抽象类为什么不能实例化

抽象类除了不能实例化和普通的类没有区别,抽象类可以有构造方法,举例说明抽象类Person,人类有男有女,有年龄等特征,有吃饭等方法,抽象类实例化时属性或方法没有具体的化,实例化人类对象不知男女,没有年龄或其他信息是未知的。抽象类更多的是用于定义公用的方法以供继承。

接口Interface

接口是一种规范,表示一种能力功能,形式I开头,able结尾

特殊性:

1 接口不能实例化

2 接口中的方法默认是抽象的,默认是public的,不需要abstract修饰

3 实现接口的具体类必须重写接口的成员,且不需要override关键字

4 接口只能包含方法,属性,索引器和事件

5 接口可继承多个接口,类可以实现多个接口

interface IFlyable
{
	string Tool { get; set; }
}

public class Bird:IFlyable
{
	public string Tool { get; set; }
	
	public void Fly()
	{
		Console.WriteLine("鸟用{0}飞",this.Tool);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值