2013-11-28 27 views
0

據我所知,每當我們想調用的任何方法,然後我們創建對象並使用obj.methodname調用它的方法來調用方法。Java的:它是如何可能直接使用類名

但下面程序調用E類的,而無需創建對象的方法。這怎麼可能?請任何人幫助我理解這個概念。

我的意思是'從下面的代碼,這怎麼可能寫出來E.test2();? ,我覺得應該是E obj=new E(); obj.test2();

class E 
{ 
    int i; 
    static int j; 

    void test1() 
    { 
     System.out.println("From test1"); 
    } 
    static void test2() 
    { 
     System.out.println("From test2"); 
    } 
} 

class F extends E 
{ 
    int m; 
    static int n; 
    void test3() 
    { 
     System.out.println("From test3"); 
    } 
    static void test4() 
    { 
     System.out.println("From test4"); 
    } 
} 

public class G { 
    public static void main(String args[]) 
    { 
     E.test2(); 
     F.test2(); 
    } 
} 
+2

「static」方法可以通過類名來調用,因爲它們屬於'Class'而不是'Class'的任何'instance',因此可以使用'類name'。我會reccomend你去下面的鏈接,閱讀completely.http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html – Deepak

回答

1

E.test2被聲明爲static的方法,這意味着你可以使用不創建類的實例,此方法。 Java中有很多類使用它。

見文檔:

Understanding Instance and Class Members

+1

哦謝謝,我沒有看到我的方法前面有'靜態'。所以我問了這個問題。其實我知道靜態成員可以使用類名來調用。我可以在5分鐘後回答你的答案 – beginner

1

靜態方法可以使用類名來調用,不需要這個類的一個對象。

請仔細閱讀本:http://introcs.cs.princeton.edu/java/21function/

+0

但你怎麼能說'類E'是靜態的嗎?' – beginner

+0

一個類不需要是靜態的。 E內的方法需要。 –

+3

'E'不是靜態的(這對於頂級類是不可能的)。這是靜態的方法。 'E'就在那裏指定哪個類擁有'static'方法。 –

1

TEST2方法是在E類靜態的,靜態的方法是類特異性不特定於對象的,並且它們被使用「classname.methodname」語法訪問。 其中methodname是「classname」的靜態方法

相關問題