簡體   English   中英

如果方法名稱與類不同,為什么這個java代碼不起作用?

[英]why does this java code not work if the method name is different from the class?

package tut;
import java.awt.Graphics;
import javax.swing.JFrame;


public class javaconcepts extends JFrame
   {
      public void paint(Graphics g)
      {
              g.drawOval(100,50,50,50);
      }

public javaconcepts()
   {
    setSize(600,400);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

   }
public static void main(String[] args)
   {
    javaconcepts guiWindow = new javaconcepts();
    guiWindow.setVisible(true);
   }    
}

對於這個非常新手的問題很抱歉,但是我在教科書中看到了一些我不明白的代碼。 教科書版本創造了一個笑臉,但我只是復制了程序,以便它顯示一個簡單的圓圈。 我非常感謝你的幫助。

如果我將“public javaconcepts()”的名稱更改為任何不同的名稱,它會給出一個錯誤,表示將其設置為void。 將其更改為void類型會導致程序不執行“public javaconcepts()”括號中的內容。

我是自學,所以我沒有老師問。 謝謝。

public javaconcepts()是一個特殊的 “方法”(參見注釋) - 一個構造函數。

那么為什么它在重命名后不起作用? 在java中,構造函數不返回任何內容,並且它們的名稱與封閉類的名稱相同 - 因此,如果您更改其中一個,則代碼會中斷。 如果你有機會出現類名 - 構造函數被破壞,因為它不是一個有效的常用方法 - 它沒有返回類型。 看看這個方法架構:

access-modifiers return-type method-name(parameters)

什么是構造函數?

構造函數是一個使用關鍵字new調用的方法,它創建並初始化新對象。

它在這一行使用: javaconcepts guiWindow = new javaconcepts();

構造函數定義來自: http//www.homeandlearn.co.uk/java/class_constructor.html

可用於設置字段變量初始值的方法。 創建對象時,Java首先調用構造函數。 然后,您的構造函數中的任何代碼都將被執行。 您不需要對構造函數方法進行任何特殊調用 - 它們會在您創建新對象時自動發生。

[通過new關鍵字]

public javaconcepts()

是構造函數而不是方法。 在Java中,構造函數需要與類具有相同的名稱,並且它們沒有返回類型。

如需進一步閱讀: https//docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

因為它是一個構造函數。 JLS-8.8。 構造函數聲明 (部分),

ConstructorDeclaratorSimpleTypeName必須是包含構造函數聲明的類的簡單名稱; 否則會發生編譯時錯誤。

在所有其他方面,構造函數聲明看起來就像沒有結果的方法聲明(第8.4.5節 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM