Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要在两个类中使用一个方法。哪种方法是好的做法?公开方法还是静态方法还是复制方法_Java_Oop - Fatal编程技术网

Java 我需要在两个类中使用一个方法。哪种方法是好的做法?公开方法还是静态方法还是复制方法

Java 我需要在两个类中使用一个方法。哪种方法是好的做法?公开方法还是静态方法还是复制方法,java,oop,Java,Oop,我有两个适配器类,它们在同一个包中,我需要以下方法 private int getAlphaValue(int backgroundTransparency) { int backgroundOpaquePercentage = 100 - backgroundTransparency; int alpha= (255 * backgroundOpaquePercentage) / 100; return alpha; } 在每个类中都有一个此方法的副本,并将其设置为私

我有两个适配器类,它们在同一个包中,我需要以下方法

private int getAlphaValue(int backgroundTransparency) {
    int backgroundOpaquePercentage = 100 - backgroundTransparency;
    int alpha= (255 * backgroundOpaquePercentage) / 100;
    return alpha;
}
  • 在每个类中都有一个此方法的副本,并将其设置为私有
  • 将方法放在其中一个类中,并使其处于静态和受保护状态,以便能够在两个方法中使用

  • 以上两种方法中哪一种是好的做法和有效的做法?

    永远不要复制!这就是为什么我们现在使用面向对象编程来避免代码重复


    只需将此方法公开/保护。

    创建一个新的
    GraphicsUtil
    类,并在其中添加
    静态
    等实用方法。这样的util方法不属于任何一个类,通过静态/全局上下文使应用程序全局可用更有意义

    所有其他图形类都将使用它作为

    int alpha = GraphicsUtil.getAlphaValue(50);
    

    你应该提供更多关于这两门课的信息。 看看这个方法,它应该是静态的,因为它不使用实例变量。
    因此,您不必让它重复。

    步骤1:创建第三个类

    第二步:写下这个方法


    步骤3:在类中,使用新创建的类的对象引用调用该方法,第一种方法是反模式。如果您的方法中有一个bug,则必须修复两次。
    第二种方法更好,但我会选择第三种方法:

    让两个类从同一基类继承,并在该类中使用方法。没有必要让它受到保护

    在某些Utils类中将其声明为静态,并从每个类访问它。