探秘static:類不需執行個體化就能用?

來源:互聯網
上載者:User

一般情況下,需要用到某個類的時候,都必須先執行個體化這個類,才能對其進行調用。在編程過程中發現,有些類不用執行個體化就可以直接拿來使用,使用它的欄位、方法等等。

這時候,靠的就是static作用。static英文意思為“靜止的,靜態”,在OOP中可以作為修飾符,類、欄位、屬性、方法等被static修飾後,變為靜態類、靜態欄位、靜態屬性、靜態方法……

static修飾的類成為靜態類,靜態類中只能包含靜態成員(被static修飾的欄位、屬性、方法),不能被執行個體化,不能被繼承;非靜態中可以包含靜態成員。  

1、被調用時必須先執行個體化的情況:

被調用成員為非靜態成員(此時它所屬的類肯定為非靜態類)。如下小例子:

public class ClassA      //ClassA類(非靜態類)    {        public ClassA() { }  //建構函式        public void Fun() { }//ClassA類中的方法(非靜態方法)    }            public class ClassB     //需要調用ClassA類中方法的ClassB類    {        public ClassB() { }  //建構函式        public void Fun()          {            ClassA a = new ClassA();//調用ClassA類中的方法需要先執行個體化            a.Fun();        }    }

說明:ClassA類為非靜態類,其中的方法Fun()也為非靜態方法,所以在ClassB中調用時需要先執行個體化ClassA類。

2、被調用時不需要執行個體化的情況:

被調用成員為靜態成員(此時它所屬的類為靜態類或非靜態類)。如下小例子:

(1)被調用類為非靜態類:

public class ClassA      //ClassA類(非靜態類)    {        public ClassA() { }  //建構函式        public static void Fun() { }//ClassA類中的方法(靜態方法)    }            public class ClassB     //需要調用ClassA類中方法的ClassB類    {        public ClassB() { }  //建構函式        public void Fun()          {            ClassA.Fun();  //調用ClassA類中的方法直接調用:類名.成員        }    }

說明:ClassA類為非靜態類,但其中的方法Fun()為非靜態方法,所以在ClassB中調用時不執行個體化ClassA類(而且不能執行個體化),直接調用其成員,文法為“類名.成員”。

(2)被調用類為靜態類:

public static class ClassA      //ClassA類(靜態類)    {        //當然靜態類中不能存在建構函式        public static void Fun() { }//ClassA類中的方法(靜態方法)    }            public class ClassB     //需要調用ClassA類中方法的ClassB類    {        public ClassB() { }  //建構函式        public void Fun()          {            ClassA.Fun();  //調用ClassA類中的方法直接調用:類名.成員        }    }

說明:ClassA類為靜態類,其中的方法也Fun()為非靜態方法,所以在ClassB中調用時不執行個體化ClassA類(而且不能執行個體化),直接調用其成員,文法為“類名.成員”。

更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。