9

在 Java 内部,什么是更好的,什么是最佳的,或者什么是标准:用常量或使用点表示法实现一个类?

例子:

选项1:

import com.myproject.Constantes;

public class myClass {
    myClass() {
        System.out.println("Math: " + Constantes.PI);
    }
}

选项 2:

import com.myproject.Constantes;

public class myClass implements Constantes {

    myClass() {
        System.out.println("Math: " + PI);
    }
}

哪个更好?为什么?MVJ 使用、资源、速度?

4

6 回答 6

9

如果Constantes纯粹是常量的集合(顾名思义)并且没有定义您需要在 中公开的功能myClass,那么 A)它不应该是interface,并且 B)您不应该实现/扩展它。导入它并像选项 1 一样使用它。

于 2012-10-29T10:49:27.267 回答
4

我认为应该使用选项 1 来避免误认为当前类内部定义的另一个 PI。

于 2012-10-29T11:01:25.703 回答
3

应该使用选项 1,因为这将明确使用导入类中定义的常量。

如果您在 myClass 中有一个名为 PI 的局部变量,选项 2 将使用该变量,而不是导入类中的变量。

于 2012-10-29T10:51:12.597 回答
1

你在这里做两件不同的事情。在第一个片段中,您只是编写碰巧引用Constantes类/接口中的东西的代码,因此需要被import'ed 而在第二个片段中,您声明您的代码必须符合Constantes接口,即实现任何和其中的所有方法。

干杯,

于 2012-10-29T10:50:39.997 回答
1

implements(一个接口,而不是一个类)表示myClass必须遵守由Constantes(通常具有必须在您的类中实现的一些方法规范)指定的合同。

在深入了解任何给定语言的特殊性之前,请检查面向对象编程 (Programación Orientada a Objetos) 的概念。

于 2012-10-29T10:50:45.623 回答
1

通常,清晰度比性能更重要,这也不例外。

选项 1 优于选项 2,因为后者意味着这myClassConstantes没有意义的。

从 Java 5.0 开始,您有另一个可能更好的选择。

import static com.myproject.Constantes.PI;
// OR
import static com.myproject.Constantes.*;

public class MyClass{
  MyClass(){
       System.out.println("Math: " + PI);
  }
}
于 2012-10-29T10:51:36.607 回答