在java中正确使用'extend'类

Ror*_*ter 1 java

假设我有一个带有泛型函数的Math类,例如

public class math {

  public double add(int a, int b){
    //code
  }

}
Run Code Online (Sandbox Code Playgroud)

我有一个" students想要使用上述add方法" 的课程.我是否用数学课程扩展学生?或者创建它的实例?例如

math a = new math(); 
a.add 
Run Code Online (Sandbox Code Playgroud)

Tah*_*idi 8

在OO设计中,使用继承进行代码重用是一种反模式和不良实践.仅在IS_A存在关系时使用继承.所以你能说students is a math吗?如果不是,则没有理由使用继承.如果您的重用方法如此常见,那么您应该将它放在实用程序类中.

有关继承Utility类的更多信息,请参阅组合 ...


Leo*_*lug 7

像这样的"辅助方法"最好的事情可能就是以静态的方式使用它们,只要它是一个像这样的微不足道的任务.您的班级名称也应以大写字母开头.

像这样:

public class Math
{

    public static double add(int a, int b)
    {
    //code
    }

}
Run Code Online (Sandbox Code Playgroud)

并像这样访问它:

Math.add(1,2);
Run Code Online (Sandbox Code Playgroud)

注意: 这只是OP应该使用的建议,对于正确使用'extend '的答案,请参阅طاهر的回答.

  • 我不知道为什么这个答案被低估了.来自我的+1.您可以使类最终并将no args构造函数设为私有以避免instanciations. (3认同)
  • 为什么在发布此答案后直接投票?我说错了吗? (2认同)