麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

靜態方法和非靜態方法的區別

2019-11-14 09:19:51
字體:
來源:轉載
供稿:網友
    使用static修飾的靜態方法是屬于整個類的類方法,它在內存中的代碼段會隨類的定義而被分配和裝載;而非靜態方法是屬于具體對象的方法,當這個對 象創建時,在對象的內存中會擁有此方法的專用代碼段。在引用靜態方法時,可以使用對象名加前綴,也可以使用類名加前綴。eg. classA 實例化了一個對象objectA,classA中定義了一個靜態方法:run( ). 則可使用 classA.run( ) 或者objectA.run( )來執行。非靜態方法既可以訪問靜態數據成員 又可以訪問非靜態數據成員,而靜態方法只能訪問靜態數據成員;同樣地非靜態方法既可以訪問靜態方法又可以訪問非靜態方法,而靜態方法只能訪問靜態數據方法。特別注意的是靜態方法中的main方法,它作為程序運行的入口點,在每個程序中有且只能有一個。  例如:public class Person{      public int age;      public static double height;      public static String Address(String x){      System.out.PRintln("address:"+x);      }       public int Birthday(int x){      System.out.println("birthday is "+x+" month");      }      public static void main(String[] args){//靜態方法      age=24;           //引用了非靜態數據成員      height=173;      Address("xi'an");      Birthday(5);      //引用了非靜態方法      }}  編譯時,就會出現無法從靜態上下文中引用非靜態變量age和非靜態方法Birthday(int)的錯誤。    還有一點就是靜態方法不能被覆蓋,有一個形象的例子引自http://blog.csdn.net/rujiao/archive/2009/01/13/3764115.aspx  首先我們提供兩個類,基類為Parent,派生類為Child。在Parent中我們提供兩個方法,一個是靜態方法staticMethod(),一個是非靜態方法nonStaticMethod()。在Child類中我們覆蓋著兩個方法。class Parent{public void nonStaticMethod(){  System.out.println("parent's Non-Static Method is Called"); } public static void staticMethod(){  System.out.println("parent's static method is called"); }}class Child extends Parent{public void nonStaticMethod(){  System.out.println("child's non-static method is called"); }public static void staticMethod(){  System.out.println("child's static method is called"); }  }    在Test類中我們分別使用Parent p1 = new Parent(),Parent p2 = new Child(),Child c = new Child()得到三個實例,并分別調用靜態方法和非靜態方法,我們來看程序的運行結果public class Test{         public static void main(String args[])          {          Parent p1 = new Parent();          Parent p2 = new Child();          Child c = new Child();          System.out.print("parent.static: "); Parent.staticMethod();          System.out.print("p1.static: "); p1.staticMethod();          System.out.print("p2.static: "); p2.staticMethod();          System.out.print("p1.nonStatic: "); p1.nonStaticMethod();          System.out.print("p2.nonStatic: "); p2.nonStaticMethod();          System.out.print("Child.static: "); Child.staticMethod();          System.out.print("c.static: "); c.staticMethod();          System.out.print("c.nonStatic: "); c.nonStaticMethod();         }}程序的運行結果為:Parent.static: parent's static method is calledp1.static: parent's static method is calledp2.static: parent's static method is calledp1.nonStatic: Parent's Non-Static Method is Calledp2.nonStatic: child's non-static method is calledChild.static: child's static method is calledc.static: child's static method is calledc.nonStatic: child's non-static method is called值得注重的是p2實際上是一個Child的類型的引用,然而在調用靜態方法的時候,它執行的卻是父類的靜態方法,而不是Child的靜態方法,而調用 p2的非靜態方法的時候執行的是Child的非靜態方法,為什么呢?原因是靜態方法是在編譯的時候把靜態方法和類的引用類型進行匹配,而不是在運行的時候 和類引用進行匹配。因此我們得出結論:當我們在子類中創建的靜態方法,它并不會覆蓋父類中相同名字的靜態方法。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久日韩在线 | 国产盼盼私拍福利视频99 | 成品片a免费直接观看 | 久久精品国产99久久久古代 | 国产成人精品二区 | 加勒比色综合 | 蜜桃传媒视频麻豆第一区免费观看 | 一区二区三区在线观看视频 | 色猫av| 午夜精品成人 | 国产一级免费片 | 亚洲激情91| 伊人av影院| 免费毛片观看 | 暴力肉体进入hdxxxx0 | 男人的天堂视频网站 | 日韩精品久久久久久久九岛 | 久久国产经典 | 日日爱影院 | 欧美1| omofun 动漫在线观看 | 天天曰夜夜操 | 红杏亚洲影院一区二区三区 | 成人国产精品一区 | 亚洲爱爱图 | 免费嗨片首页中文字幕 | 亚洲综合色视频在线观看 | 看免费av | 91精品国产91久久久久久吃药 | 日本黄色免费播放 | 久久久久久久久久久高潮一区二区 | 一边吃奶一边摸下娇喘 | 国产91久久久| 中文字幕 欧美 日韩 | 99爱福利视频在线观看 | 国产精品久久久久久久久久 | 国产精品99久久99久久久二 | 欧美2区 | 香蕉成人在线观看 | 亚洲人片在线观看 | 日本成人一区 |