有趣的接口和抽象类

接口和抽象类的定义和区别,可以查看博主anytao的博客https://www.cnblogs.com/anytao/archive/2007/04/12/must_net_02.html

接口:一般是用来定义行为方式

public interface IAction
{
        //定义行为方式移动
        void Move();
}

抽象类:一般是用来定义共同特征

public abstract class Similarity
    {
        //定义字段
        protected string _name;
        //声明抽象属性
        public abstract string Name
        {
            get;
        }
        //声明一个抽象方法
        public abstract void Color();
        //实现一个虚方法
        public virtual void Head()
        {
            Console.WriteLine(_name+"有一个脑袋");
        }
        //实现一个普通方法
        public void Eyes()
        {
            Console.WriteLine(_name+"有2只眼睛");
        }
    }

实现抽象类和接口

public class Rabbit : Similarity,IAction
    {
        public override string Name
        {
            get
            {
                return _name;
            }
        }
        public Rabbit(string name)
        {
            _name = name;
        }
        public void Move()
        {
            Console.WriteLine(_name+"奔跑!");
        }
        public override void Color()
        {
            Console.WriteLine(_name+"灰色");
        }
    }

客户端实现

static void Main(string[] args)
        {
            Rabbit rabbit = new Rabbit("兔子");
            rabbit.Color();
            rabbit.Move();
            rabbit.Head();
            rabbit.Eyes();
        }

结果:

兔子灰色

兔子奔跑!

兔子有一个脑袋

兔子有2只眼睛 

 

注意:抽象类的虚方法重写不是必须的,可以选择重写。重写之后会替换掉原来的方法。

 

posted @ 2018-07-06 12:12  清仙童  阅读(120)  评论(0编辑  收藏  举报