抽象类
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);
}
}