C#浅析接口与抽象基类--学习总结
1. 个性大于共性。
2. 差异较大的个性间具有某些相同的行为。
3. 相同行为的实现方式有较大区别。
开门见山:
当在差异较大的对象间寻求功能上的共性时,使用接口。
当在共性较多的对象间寻求功能上的差异时,使用抽象基类。
接口案例:
//==============================================================
// 作者:zhoupei
// 时间:2019/2/15 16:34:27
// 文件名:InterFace_Swim
// 版本:V1.0.1
// 说明:接口
//==============================================================
//定义接口,游泳
public interface ISwim
{
//定义方法;游泳的方式
public void SwimmingStyle();
}
//定义人类;继承游泳接口
public class Person : ISwim
{
//人类游泳
public void SwimmingStyle();
}
//定义蛙类;继承游泳接口
public class Frog : ISwim
{
//蛙类游泳
public void SwimmingStyle();
}
public class Fish : ISwim
{
//鱼类游泳
public void SwimmingStyle();
}
抽象基类案例:
//==============================================================
// 作者:zhoupei
// 时间:2019/2/15 16:34:27
// 文件名:Abs_Fish
// 版本:V1.0.1
// 说明:抽象基类
//==============================================================
/// <summary>
/// 定义鱼类游泳
/// </summary>
public abstract class Abs_Fish
{
public abstract void FishSwim();
}
//鲫鱼游泳
public class JI_Fish : Abs_Fish
{
public override void FishSwim()
{
Console.WriteLine("鲫鱼游泳");
}
}
//锦鲤游泳
public class LI_Fish : Abs_Fish
{
public override void FishSwim()
{
Console.WriteLine("锦鲤鱼游泳");
}
}
//金鱼游泳
public class Gold_Fish : Abs_Fish
{
public override void FishSwim()
{
Console.WriteLine("金鱼游泳");
}
}
观察在使用接口或是使用抽象基类的几条理由中,第三条理由其实是一样的,它所描述的是面向对象中多态的概念,即通过覆盖父类的方法来实现,在运行时根据传递 的对象引用,来调用相应的方法。第二条理由开始产生分歧,接口更加强调了继承对象间具有相同的行为,而抽象类同时还强调了继承对象间具有相同的属性。
引自:淡淡的忧伤 的话