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