當前位置:首頁 » 編程語言 » java靜態調用非靜態方法

java靜態調用非靜態方法

發布時間: 2022-06-17 09:17:23

1. java中如何在靜態方法中實現對非靜態方法的調用,請問各位有沒有具體的例子。

public class A{
//類A中非靜態方法

public void func(){ ...... }

//類A中靜態方法(主函數)

public static void main(String[] args){
A a=new A();//需實例化A的對象後才可以調用A中非靜態方法
a.func();
}

如上面這個簡單的例子,靜態方法對非靜態方法發起調用時,需實例化包含非靜態方法的類的對象。如果類A中靜態方法需調用類B中非靜態方法時,也需實例化B的對象。

原因解釋:類中靜態的方法或者屬性,本質上來講並不是該類的成員,在java虛擬機裝在類的時候,這些靜態的東西已經有了對象,它只是在這個類中"寄居",不需要通過類的構造器(構造函數)類實現實例化;而非靜態的屬性或者方法,在類的裝載是並沒有存在,需在執行了該類的構造函數後才可依賴該類的實例對象存在。所以在靜態方法中調用非靜態方法時,編譯器會報錯(Cannot make a static reference to the non-static method func() from the type A)。

不知這么說你懂了沒,如果還有什麼不懂可以繼續問我。

2. java中帶靜態方法可不可以調用非靜態方法

當然可以,最常見的main調用不就是靜態方法調用非靜態方法嗎

static方法內部不能直接調用非靜態方法,
可以在調用之前實例化非靜態方法所在的類,再用類點方法來調用。

3. java中靜態方法中不能調用非靜態方法

靜態static方法中不能調用非靜態non-static方法是值得是不能直接調用non-static方法
public
class
Test01
{
public
static
void
main(String[]
args)
{
hello();
}
public
void
hello()
{
}
}
是指的這種
在靜態的main方法中,直接調用了本類的非靜態方法hello(),這種是不允許的

4. JAVA 里既然靜態方法無法調用非靜態方法,那主方法main 裡面,為什麼可以通過對像,來調用非靜態方法的呢

非靜態成員函數在執行前必須先構造並實例化該函數所在的類。
如果允許非靜態的main,那麼main函數所在的類必須先進行實例化,
那麼就需要再寫個函數去實例化main所在的類,再調用main,這個實例化代碼又寫在哪呢?如果它也是非靜態的,豈不是又要寫個函數去實例化它所在的類嘛?
因此,java語言就規定了main必須是靜態的。

5. 關於java的無法從靜態上下文中引用非靜態 方法

由於tostring()方法是非靜態的,故不能直接通過類名引用,上面的這句代碼:
system.out.println(course.tostring());
改為
system.out.println(cs.tostring());
即可。
有問題歡迎提問,滿意請採納,謝謝!

6. java 靜態方法裡面可以調用非靜態方法嗎

//可以的!
publicclassStaticTest
{
publicstaticvoidmain(String[]args)
{
System.out.println(" 如何實現靜態方法調用非靜態方法有哪些 ");

//方式1:匿名調用!
newStaticTest().show();

//方式2:創建對象調用!
StaticTestst=newStaticTest();
st.show();

}
//非靜態方法!
voidshow()
{
doublep=(double)2.0-(double)1.1;

System.out.println("測試調用:非靜態方法show.....!"+p);

}
}

7. java靜態方法能調用非靜態方法么

當然可以。你可以參考示例。
public class A{
//類A中非靜態方法

public void func(){ ...... }

//類A中靜態方法(主函數)

public static void main(String[] args){
A a=new A();//需實例化A的對象後才可以調用A中非靜態方法
a.func();
}

8. java 靜態方法可以調用非靜態方法嗎

//必須可以!
publicclass非靜態方法
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========java靜態方法可以調用非靜態方法嗎!========== ");
init();
}
//測試案例,靜態方法!
privatestaticvoidinit()
{
//這里調用下面的,看控制台輸出!
new非靜態方法().show();
//很好調用,創建對象即可!
}
//測試2,非靜態方法!
privatevoidshow()
{
System.out.println("show--是非靜態方法!");
}
}

9. 在Java中,為什麼靜態區域的方法不能調用非靜態區域的方法

理解起來很簡單,因為兩者的載入時機不同,靜態區的先載入,非靜態區的後載入。
具體說:
靜態區的方法,在虛擬機載入類文件(.class)的時候,就載入了,而非靜態區的方法,是直到有對象被new出來的時候才會載入。
也就是說,如果在非靜態區的方法載入之前就調用了它,顯然是無法調用到的。所以才會規定靜態方法中不能調用非靜態的。

10. java主方法如何調用非靜態方法

java主方法調用非靜態方法的步驟:

  • 1、新建一個類,本例類名「NoStaticMethod」,聲明一些成員變數,創建一個主方法main(),一個非靜態方法Method_1()。

  • 2、類的全部代碼。

** * Created by Administrator on 2016/7/25.

*/

public class NOstaticMethod {

//satement new variable name: studentName

public static String studentName = "xxx";

//satetment new variable nmae: country

public static String country;

//satement new variable name: nation

private static String nation;

//satement new variable name: subject

public String subject = "物理";

//satement new variable name: school

private String school;

//create main method

public static void main(String[] args) {

//NOstaticMethod.Method_1(); 在靜態方法main中是不能直接調用非靜態方法Method_1的

//只能通過創建類的對象,再由對象去調用成員方法以及成員變數。

NOstaticMethod wangyan = new NOstaticMethod();

//call methol

wangyan.Method_1();

// String physics= subject;在靜態方法中也是不能訪問非靜態成員變數的

//call not static variable

String physics = wangyan.subject;

System.out.println("在主方法main()中只能通過對象來調用非靜態成員變數subject:" + physics);

}

//create new method name: Method_1()

public void Method_1() {

System.out.println("Method_1是一個公共的、非靜態的方法");

System.out.println("在非靜態方法Method_1中訪問靜態成員變數「學生姓名」(studentName):" + studentName);

System.out.println("在method_1中直接調用非靜態成員變數subject:" + subject);

}

  • 3、運行結果

Method_1是一個公共的、非靜態的方法

在非靜態方法Method_1中訪問靜態成員變數「學生姓名」(studentName)

在method_1中直接調用非靜態成員變數subject(科目)

在主方法main()中只能通過對象來調用非靜態成員變數subject

  • 4、分析代碼

public static void main(String[] args) {

//NOstaticMethod.Method_1(); 在靜態方法main中是不能直接調用非靜態方法Method_1的

//只能通過創建類的對象,再由對象去調用成員方法以及成員變數。

NOstaticMethod wangyan = new NOstaticMethod();

//call methol

wangyan.Method_1();

// String physics= subject; 在靜態方法中也是不能訪問非靜態成員變數的

//call not static variable

String physics = wangyan.subject;

System.out.println("在主方法main()中只能通過對象來調用非靜態成員變數subject:" + physics);

}

熱點內容
屏幕看不清了如何輸密碼 發布:2025-02-06 18:51:14 瀏覽:332
手機開腳本買個什麼配置的 發布:2025-02-06 18:45:59 瀏覽:111
python代碼輸入 發布:2025-02-06 18:32:35 瀏覽:562
易語言上傳ftp文件夾 發布:2025-02-06 18:31:09 瀏覽:73
仿qq源碼java 發布:2025-02-06 18:24:06 瀏覽:424
阿里雲訪問mysql資料庫 發布:2025-02-06 18:17:57 瀏覽:789
原神遊戲伺服器ip 發布:2025-02-06 17:54:23 瀏覽:811
如何查筆記本電腦的真正配置 發布:2025-02-06 17:48:07 瀏覽:82
存儲器存在地址 發布:2025-02-06 17:47:28 瀏覽:540
phpsocket教程 發布:2025-02-06 17:42:13 瀏覽:424