zoukankan      html  css  js  c++  java
  • 有趣的接口和抽象类

    接口和抽象类的定义和区别,可以查看博主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只眼睛 

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

  • 相关阅读:
    Sum of a Function(区间筛)
    (01背包)输出方案数
    删边求概率
    完全背包输出方案数(dp)
    二分
    Just Arrange the Icons(模拟)
    Balls of Buma(回文串)
    dp思想
    刷题-力扣-190. 颠倒二进制位
    刷题-力扣-173. 二叉搜索树迭代器
  • 原文地址:https://www.cnblogs.com/Aspvn/p/9698866.html
Copyright © 2011-2022 走看看