㈠ 靜態方法的方法使用
靜態方法與靜態變數一樣,屬於類本身,而不屬於那個類的一個對象。調用一個被定義為static的方法,可以通過在它前面加上這個類的名稱,也可以像調用非靜態方法一樣通過類對象調用。
實例方法必須通過類的實例來使用。實例方法可以使用類的非靜態成員,也可以使用類的靜態成員。
類的靜態方法,靜態變數是在類裝載的時候裝載的。但是要特別注意,類的靜態變數是該類的對象所共有的,即是所有對象共享變數。所以建議盡量少用靜態變數。盡量在靜態方法中使用內部變數。 其中static關鍵字即表示靜態的。聲明靜態方法的語法如下:
<訪問修飾符>static返回類型 方法名(參數列表)
{//方法體} 靜態方法與實例方法唯一不同的,就是靜態方法在返回類型前加static關鍵字。靜態方法的調用有兩種途徑:
(1)通過類的實例對象去調用
調用格式為: 對象名.方法名
(2) 通過類名直接調用
調用格式為: 類名::方法名 我們在使用時要注意:
靜態方法只能訪問類的靜態成員,不能訪問類的非靜態成員;
非靜態方法可以訪問類的靜態成員,也可以訪問類的非靜態成員;
靜態方法既可以用實例來調用,也可以用類名來調用。 #include<iostream>using namespace std;
class CStaticTest{public:CStaticTest(int a){this->a = a;}~CStaticTest(){}
static int add(CStaticTest& c1, CStaticTest& c2){return c1.a + c2.a;}
private:int a;};
int main(){CStaticTest tmp1(1);CStaticTest tmp2(2);int sum1 = tmp1.add(tmp1, tmp2);int sum2 = CStaticTest::add(tmp1, tmp2);
cout << sum1 << endl;cout << sum2 << endl;return 0;} 1. 有靜態屬性的類,一般會定義靜態方法。
2. 沒有屬性的類,一般會定義靜態方法,這樣在使用時,通過類名::方法名即可調用,
而不用先定義對象,再調用,這樣可以省去一行代碼。

㈡ 靜態方法可以直接調用實例方法么
package com.text_3;
//靜態方法不能直接調用實例方法和變數,但可以間接調用(即在靜態方法中創建類的實例,然後調用)
class Demo_12 {
public static void main(String[] args) {
Circle c=new Circle();
Demo_12 d=new Demo_12();
method1();//此處報錯,靜態方法不能直接調用非靜態方法
d.method1(); //間接調用,無錯
c.setRadius(5.0); //間接調用,無錯
}
public void method1(){
method2();
}
public static void method2(){
Circle c=new Circle();
System.out.println("what is radius " +c.getRadius());
}
}
class Circle{
private double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
}
㈢ c++靜態函數怎麼調用
靜態函數是用類名而不是對象名,,,, 用的是第一種,
第三種是在定義靜態函數的時候比如
class A{..................static void C();};
void A::C(...){}
㈣ c語言靜態函數調用問題
樓主您好,是這樣的,因為你的main.cpp中包含#include"a.cpp"和#include"b.cpp",他們的意思是主程序文件包含其他a和b兩個文件中的內容,因此可以調用裡面的函數;
如果去掉他們,若是主程序文件仍想調用他們,則必須在主程序文件中用extern聲明,說明他們是在別的程序文件中,然後才可以調用。
希望對樓主理解有幫助。
㈤ static 定義的函數,怎麼使用
static定義變數的使用:
一、靜態局部變數:
1、Static類內部變數同auto自動變數(即未加 Static 聲明的局部變數)一樣,是某個特定函數的局部變數,即只能在定義該變數的函數內使用該變數,2者作用域相同;兩者的不同在於:auto自動變數會隨著函數被調用和退出而存在和消失,而static類局部變數不會,它不管其所在的函數是否被調用,都將一直存在;不過,盡管該變數還繼續存在,但不能使用它。倘若再次調用定義它的函數時,它又可繼續使用,而且保存了前次被調用後留下的值。換言之,Static類型的內部變數是一種只能在某個特定函數中使用,但一直占據存儲空間的變數。
2、函數體內如果在定義靜態變數的同時進行了初始化,則以後程序不再進行初始化操作(出現在函數內部的基本類型的的靜態變數初始化語句只有在第一次調用才執行)。而對自動變數賦初值是在函數調用時進行,每調用一次函數重新給一次初值,相當於執行一次賦值語句。
3、靜態局部變數的初始化表達式必須是一個常量或者常量表達式。即使局部靜態變數定義時沒有賦初值,系統會自動賦初值0(對數值型變數)或空字元(對字元變數);靜態變數的初始值為0。而對自動變數auto來說,如果不賦初值則它的值將是個不確定的值。
4、當多次調用一個函數且要求在調用之間保留某些變數的值時,可考慮採用靜態局部變數。雖然用全局變數也可以達到上述目的,但全局變數有時會造成意外的副作用,因此仍以採用局部靜態變數為宜。
註:局部靜態變數佔用內存時間較長,並且可讀性差,因此,除非必要,盡量避免使用局部靜態變數。
二、靜態全局變數
全局變數(外部變數)的說明之前再冠以static 就構成了靜態的全局變數。
全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。
這兩者在存儲方式上並無不同。
這兩者的區別雖在於:
1、非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。
2、靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效,在同一源程序的其它源文件中不能使用它。
由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。
從以上分析可以看出
把局部變數改變為靜態變數後是改變了它的存儲方式,即改變了它的生存期。
把全局變數改變為靜態變數後是改變了它的作用域,限制了它的使用范圍。
因此static這個說明符在不同的地方所起的作用是不同的。應予以注意。
㈥ 如何在C#中,在一個類里調用另外一個類的方法
如果要通過類名來用方法的話,那其中的方法必須是靜態方法,需加上static。即public static void get() {...}。靜態方法是跟類關聯的,允許不對classA實例化,就可以用它的方法。
把A類有引用的方法加static
public class A
public static void MethodA()//如果不是static 就要實例化才能調用
public class B
public void MethodB
A.MethodA();//第一種方式
如果MethodA()沒有加static關鍵字
則使用 new A().MethodA();
}

語言結構
類:一個基本的C#類中包含數據成員、屬性、構造器和方法。屬性可以是靜態或實例成員。在C#中類的聲明與C++和Java很相似。但是,不像C++,C#結構體與類是不支持繼承多個父類。但是,與Java相同的是,一個結構體可以實現介面(interface)。Java的關鍵字import已經被替換成using,它起到了同樣的作用。
以上內容參考:網路-c#
㈦ 一個類裡面怎樣在一個方法裡面調用另一個方法 C
java類有兩種方法一種是類方法就是用static修飾的,一種是實例方法,就是沒有static修飾的方法。類方法可以同時類名.方法名的方式調用。而實例方法必須先生存類的實例在通過實例.方法名的方式調用。例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MethodCall
{
public static void main(String[] args)
{
Test.sayStatic();
Test test = new Test();
test.sayInstance();
}
}
class Test
{
public static void sayStatic()
{
System.out.println("這是一個靜態方法。");
}
public void sayInstance()
{
System.out.println("這是一個實例方法。");
}
}
㈧ 如何調用內部類中的靜態方法
一般來說,外部類調用內部類的方法分為以下幾種情況:
1.使用static可以聲明一個內部類, 可以直接在外部調用
// 定義外部類
class Outer
{
// 定義外部類的私有屬性
private static String info = "hello world";
// 使用static定義內部類為外部類
static class Inner
{
// 定義內部類的方法
public void print()
{
// 直接訪問外部類的私有屬性
System.out.println(info);
}
};
// 定義外部類的方法
public void fun()
{
// 通過內部類的實例化對象調用方法
new Inner().print();
}
};
public class InnerClassDemo03
{
public static void main(String args[])
{
// 調用外部類的fun()方法
new Outer.Inner().print() ;
}
};
2.不使用statc聲明一個內部類 ,使外部調用
//定義外部類
class Outer
{
//定義外部類的私有屬性
private String info = "hello world";
//定義內部類
class Inner
{
//定義內部類的方法
public void print()
{
//直接訪問外部類的私有屬性
System.out.println(info);
}
};
//定義外部類的方法
public void fun()
{
//通過內部類的實例化對象調用方法
new Inner().print();
}
};