繁体   English   中英

为什么我们不必在Java中创建System或Math类的对象并直接使用它们呢?

[英]Why don't we have to create object of System or Math classes in java and use them directly?

我们使用System.out.println而不实例化它或创建它的对象。 数学课和许多其他课程也是如此(我猜)。 这些课程有什么特别之处吗? 我们可以以相同的方式使用在这些类中声明的类和方法吗? 请帮忙。

这就是所谓的“静态”方法。 为了调用静态方法,您不需要具有该类的实例。

这还具有其他副作用,例如不存在“ this”,因此静态方法无法调用实例方法。

这主要用于某些经常是无状态的实用程序类。

数学就是一个很好的例子。

我建议一般阅读一些有关静态方法和Java中的静态方法的知识。

您不必为SystemMath类创建对象,因为这些类中的方法和变量是static 这意味着它们属于类本身,而不属于类的实例

供参考,请参阅:

为什么我们不必在Java中创建System或Math类的对象并直接使用它们呢?

因为Math的方法被声明为static方法,并且因为System.in / System.out / System.errstatic变量。

这些课程有什么特别之处吗?

否。任何声明为static变量或方法都将以这种方式运行。

我们可以以相同的方式使用在这些类中声明的类和方法吗?

我真的不明白你在问什么。 但是,如果您询问是否可以创建MathSystem的实例,以便可以执行以下操作:

    Math myMath = new Math();
    myMath.min(1, 2);
  1. 不,你不能。 这些类都不具有公共构造函数,因此您不能new它们。

  2. 而且,如果您能做到这一点,那将是非常糟糕的风格!

参考:

我们不会实例化其他所有类或方法,因为JVM(Java虚拟机)已经将它们加载到项目中,因此,我们可以一次又一次地使用这些类。 主要方法就是这样一个例子。 这些类/方法已经为我们预先定义,因此我们无需实例化此类/方法,因为它们是静态的。

您无需创建SystemMath类的对象即可使用它,因为它们具有静态方法 静态方法属于该类,因此不需要实例化它。

虽然可以先创建其对象,然后再使用这些方法,但是为静态方法创建类是没有用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM