zoukankan      html  css  js  c++  java
  • 遇到一个面向对象无法解决的问题。

    如下代码所示:

    public abstract class ReadOnlyRuleBase
    {
          public abstract string GetName() ;
    }
    
    
    public abstract class RuleBase: ReadOnlyRuleBase
    {
           public override string GetName() { return "MyTable" ;}
    }
    
    
    public class MyTable: RuleBase
    {
          //我想在这里添加约束,一定要重写 GetName 方法。怎么办?
    }

    即: 孙类一定要继承某类的虚方法。

    后来,变通处理:

    public interface IReadOnlyRule
    {
    }
    
    public interface IWriteableRule
    {
    }
    
    public abstract  class RuleBase
    {
         public abstract string GetName() ;
    }
    
    
    public abstract class MyTable:RuleBase , IWriteableRule
    {
         public override string GetName(){ return "MyTable" ;} 
    }

     后来,想到一个变通的办法:

    public abstract class ReadOnlyRuleBase
    {
          public abstract string GetName() ;
    }
    
    
    public abstract class RuleBase: ReadOnlyRuleBase
    {
           public override string GetName() { return GetRuleName() ;}
    
           protected abstract  string GetRuleName() ;
    }
    
    
    public class MyTable: RuleBase
    {
          // 一定要重写  GetRuleName , 来达到重写爷类的 GetName 方法的目的。
    }

    这也只是三级的处理方式,每多一级,就会多一个方法,让子类重写,用规范约束好的话,也可以接受。

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    C++类内存分布
    职场人理财之指数基金篇
    职场之殇---有些事情千万不能做
    职场人为什么需要理财
    职场发展之跟对老板有多重要
    职场中怎么做好一个演讲
    多线程如何按指定顺序同步执行
    多线程抢票系统浅析
    Spring Boot进阶系列三
    Spring Boot进阶系列二
  • 原文地址:https://www.cnblogs.com/newsea/p/2443239.html
Copyright © 2011-2022 走看看