• 说说面向对象的故事,主人是人类!(二)


    接口与抽象类
    这两个家伙是被人们说的最多的东西了,在概念上我不想再多说了,我只是想把它们俩个在项目的应用上简单来说两句.
    接口,规定了一些必须被实现的行为,即只要是继承了接口,那么接口里的所有方法你都要继承,当然,如果有些方法对于你没有任何实现的价值,你也可以不去实现它,你抛一个这样的异常出来:
         /// <summary>
        /// 人类的行为
        /// </summary>
        public interface PeopleEvent
        {
            /// <summary>
            /// 走路
            /// </summary>
            void Walk();
            /// <summary>
            /// 说话
            /// </summary>
            void Say();
            /// <summary>
            /// 使用的拐杖
            /// </summary>
            void Handle();
        }
     
        public class ChildEvent : PeopleEvent
        {
     
            #region PeopleEvent 成员
     
            public void Walk()
            {
                Console.WriteLine("走路不能太快");
            }
     
            public void Say()
            {
                Console.WriteLine("说话口吃");
            }
     
            public void Handle()
            {
                throw new NotImplementedException("小孩的行为,不用实现拐杖");
            }
     
            #endregion
    }
    再来看看抽象类,它在项目开发时经常用来作对象的基类,本身有公用的属性和方法,也为子类提供了可以复写的方法,看代码:
         /// <summary>
        ///  人类基类
        /// </summary>
        public abstract class PeopleBase
        {
            /// <summary>
            /// 定义一个对象,只有它的子类可以访问到它
            /// </summary>
            // protected string PeopleDescribe = "人,是一种高级动物"; //这种定义很不安全,因为它的读写是完全公开的
            protected string PeopleDescribe //它是只读属性
            {
                get
                {
                    return "人,是一种高级动物";
                }
            }
            /// <summary>
            /// 建立一个虚方法,子类可以根据自己的逻辑去复写它[为什么要定义成public而不定义成protect呢
            /// 因为它的子类进行复写后这个方法将被其它项目进行调用,所以要用public]
            /// </summary>
            public virtual void DisplayDes()
            {
                Console.WriteLine(this.PeopleDescribe);
            }
        }
     
        public class Child : PeopleBase
        {
            public override void DisplayDes()
            {
                base.DisplayDes();
            }
    }
     
    小技巧:
      #region 一个字符串用*号分割后,然把*号改为用,号分割的实现方法
                string str = "ok*good*yes";
                string[] strarr = str.Split(new char[] { '*' }, StringSplitOptions.RemoveEmptyEntries);
                string str2 = string.Join(",", strarr);
                Console.WriteLine(str2);
      #endregion
  • 相关阅读:
    大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark
    淘宝搜索引擎的缓存机制入门总结
    Log4j写日志文件使用详解
    storm入门(一):storm编程框架与举例
    storm入门(二):关于storm中某一段时间内topN的计算入门
    关于京东推荐模型的阅读理解
    运维开发入门记录
    Redis 3.0.0 集群部署
    Redis集群部署
    秘籍
  • 原文地址:https://www.cnblogs.com/lori/p/2057141.html
Copyright © 2020-2023  润新知