java問題 靜態方法

靜態方法為什麼不能呼叫非靜態方法

請詳細說明一下~

這份資料很急著要

1 Answer

Rating
  • ㄚ翎
    Lv 7
    1 decade ago
    Favorite Answer

    幫你找到一些資料希望對你有所幫助

    這是呼叫沒有錯, 且是類別呼叫, 因為被呼叫的方法是static.

    若printTriangle不是static, 則你必須先宣告一個類別為MethodDemo的變數, 然後實做這個變數, 才能呼叫printTriangle, 此稱為實體呼叫.例如:public class MethodDemo {public MethodDemo(){ //MethodDemo 類別的建構元 (constructor)} void printTriangle(int level) { //把static拿掉int i, j;for ( i = 1; i <= level; i++) {for ( j = 1; j <= i; j++ )System.out.print("* ");System.out.println();}}public static void main(String[] args) { int level = 8;/*宣告類別為MethodDemo的變數md, 並用constructor將其初始化*/MethodDemo md=newMethodDemo(); /*必須用md這個已經初始化的實體來呼叫*/md.printTriangle(level); }} class A {int x = 0;int y = 0;/*沒有參數的建構元*/public A() { this.x = 10;this.y = 20;}/*有參數的建構元*/

    puclic A (int xx, int yy) {this.x = xx;this.y = yy; } 以上是一個簡單的Java類別.當我在main方法裡面要實作一個類別為A的物件a1, 而x跟y我想用他的預設值, 因此我用沒有參數的建構元實作此物件:

    A a1 = new A();我實作另一個類別為A的物件a2,而x跟y我想自行指定為1000和500,此時我就應使用有參數的建構元實作此一物件:A a2 = new A(1000, 500); a1和a2同樣都是類別為A的物件,但他們有啥不同?其實就是屬性x和y的值不同.如果我執行a1.add() 會得到 30, 執行a1.minus()會得到-10,因為a1是使用無參數的建構元建立的, 因此x = 10, y =20;若我執行a2.add()會得到1500, 執行a2.minus會得到500, 因為a2是使用有參數的建構元所建立的, 因此x=500, y=1000都是我用參數指定的. 2007-02-14 00:17:43 補充 總之建構元是用來初始一個物件的方法, 一個類別可以有很多建構元, 名稱都一樣, 但是每種參數結構只能有一個, 例如無參數的只能有一個, 兩個整數參數的也只能有一個, 在呼叫的時候就是靠所使用的參數去區分你是呼叫哪一個建構元這邊因為篇幅的關係只能作一個簡單的說明, 若要更詳細的說明, 我這邊推薦一個學習網站良葛格學習筆記http://caterpillar.onlyfun.net/Gossip/index.html ,裡面可以找到很多程式語言的學習資源.Java的學習筆記在這裡:http://caterpillar.onlyfun.net/Gossip/JavaGossip-V...

    圖片參考:http://online.sccnn.com/gif8/275/31.gif

    翎願你每天都黑皮

    Source(s): Jason 知識家
    • Login to reply the answers
Still have questions? Get your answers by asking now.