java - JAVA 中的 OOP - Android

标签 java android oop

从另一个类调用方法的最正确方法是什么?

创建对象更正确:

private MyClass myclass;
myclass = new MyClass();

然后调用一个方法:

myclass.mymethod();

或者直接从类中调用:

MyClass.mymethod();

哪个更有优势?系统执行哪个成本更低、难度更小?

最佳答案

它们可能不等价。

能够调用:

MyClass.mymethod();

mymethod 必须是一个static 方法:

public MyClass {
  public static void mymethod() { /* something */ }
}

的确,如果 mymethod static 方法,您也可以像调用实例方法,如:

myclass = new MyClass();
myclass.mymethod(); // works even if mymethod is static

但是,归根结底,在性能方面(关于方法调用本身),这两种方法之间没有明显的区别。

您应该选择在语义上更有意义的方法:

  • mymethod 是只对类的特定实例有意义的操作吗?

    • 让它成为一个实例(非static)方法
  • mymethod 是一个不需要实例来执行的操作吗?

    • 让它成为一个static方法。

值得注意的是,虽然它们不是炸弹,但您应该尽可能避免使用static 方法。您添加的 static 方法越多,您的 OO 代码就越过程化。更不用说 static 方法不是可重写的,因此,可能更难测试/模拟。

关于java - JAVA 中的 OOP - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49582560/

相关文章:

java - 如何将枚举干净地链接到类中的静态信息?

android - 为什么 getWritableDatabase 在某些设备上崩溃? (sqlite3_open_v2 ... 失败)

c++ - 不完整类型循环依赖c++的无效使用

algorithm - Java 编程方法重载

java - ActiveMQ/JMS "losing"消息 - 我缺少什么?

Java减少列表到回退链

java - 将原始资源设置为所选绘图中的壁纸

javascript - 我如何从 Android 中具有高 javascript 的网站检索?

android - 临时禁用或修改 Android 上的 SELinux

java - 设计模式: How to structure the following scenario into proper classes?