簡體   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