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方法。

  • 相关阅读:
    fused multiply and add
    gcc优化选项解析
    gcc的搜索路径,头文件和库
    使用-Wl直接向ld传递参数
    ldd LD_TRACE_LOADED_OBJECTS
    linux下库的使用
    在RedHat 5下安装Oracle 10g详解(转)
    Centos下安装X Window+GNOME Desktop+FreeNX
    oracle exp direct 执行机制
    详解Oracle的unlimited tablespace系统权限
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/13062391.html
Copyright © 2011-2022 走看看