zoukankan      html  css  js  c++  java
  • D365 FO最佳实践BP(七)-构造函数应该Protected

    BPErrorClassNewNotProtected: The constructor (i.e. the 'new' method) should be protected. In addition, private constructors are allowed on final classes.
    如果类的new方法定义为public,会报上述BP。
    提示也很明确,类的构造函数new方法,应该是protected,另外,如果类是final的,构造函数也可以是private的。
    第二句容易理解,如果一个类不是final,但是构造函数new是private的,子类都没办法实例化了,所以如果要定义private类型的构造函数,只能是不可继承的类。
    第一句,为什么AX要推荐使用protected类型的new方法。
    因为X++不支持方法的重载,构造函数也只能有一个new方法,所以AX推荐的做法是
    1.new方法设置为protected(如果是final类,也可以设置为private)
    2.new方法不带任何参数
    3.使用new*静态方法
    4.通过parm方法给相应的变量赋值
    这样如果类有多个不同的入参,可以定义多个静态的new*方法,*可以用描述性的词语来代替,这样的做法使得累的实例化更加具有描述性。
    当然如果一个类特别简单,不可能有多个入参,直接用new也不是什么大问题,要不然就弄成一个protected的,然后加一个public的静态construct方法。

  • 相关阅读:
    int (*p)[10] 与*p[10]的区别
    运算顺序
    关于linux开机进入grub问题的解决方法
    对于特殊字符串的处理方法
    学习进度条
    阅读《实例化需求》4-6章有感
    学习进度条
    阅读《实例化需求》1-3章有感
    问题账户需求分析
    2016年秋季个人阅读计划
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/13062391.html
Copyright © 2011-2022 走看看