【Java】基本架構:屬性、方法- 類別、變數、static

文章推薦指數: 80 %
投票人數:10人

class是一個類別,裡面會裝著各種屬性跟方法,就像一個裝著各種用具跟資料的 ... static int b=2;//static變數 跟class一起,屬於類別非物件(不用先 ... 學習筆記專區 跳到主文 個人學習筆記放置區 部落格全站分類:不設分類 相簿 部落格 留言 名片 Mar20Sun201600:24 【Java】基本架構:屬性、方法、類別、變數、static 前面寫著class的,是類別。

類別裡面有屬性跟方法。

屬性是一些直接定義出來的變數,例如一個名字叫a的整數型態資料,剛開始時設定他是5,整體寫來如下: inta=5; ↑這就是屬性,你之後若是把a叫出來,他就會是等於可以做加減運算的整數數字5。

方法就是裡面有些算是或者有些東西,你叫了方法就好像是拿了一個工具一樣。

例如有個方法,呼叫他時可能就會列印「你好」,就好像是拿到一個會自己說話的工具。

又或者有的方法是可以幫你計算兩個數字相加之類的,就像是拿到一台只會加法的計算機。

class是一個類別,裡面會裝著各種屬性跟方法,就像一個裝著各種用具跟資料的工具箱一樣,你呼叫他就像是把工具箱拿出來,但你要使用的是工具(方法、屬性),而不是那個箱子。

  又或者可以把類別視為一個總稱,例如人類。

屬性就是人類的特性,例如兩條腿、兩顆眼睛。

方法就是人類可以做的事情,例如吃喝玩樂跑步睡覺。

但你無法叫「人類」去做事情,只能叫「個人」去做事情,這個「個人」就是實體化(new) 也就是你希望有人幫你做事情時,你得先生出一個人(實體),然後才能叫他去幫你做事情。

(對電腦來說則是撥出一塊記憶體放東西) 而這個「呼叫」(產生實體)的方式如下: Humanmike=newHuman(); 等號的右邊newHuman字如其意「產生一個新的人類(實體)」 等號的左邊幫這個新生出來的人類取名字:(把右邊產生的人類)取名叫mike,並且告訴電腦這傢伙的類別是人類(這部分就像上面舉的a一樣,你得告訴電腦a是一個整數,也得告訴他mike是個人類) 於是電腦知道mike是人類了,就可以去人類的類別裡看看人類會做甚麼事情、有甚麼特點(方法跟屬性) packagetw.xxx.xxx.copy.oop;   publicclassOrder{ //看到關鍵字class,所以Order是一個類別,底下可以放屬性跟方法 //現在有一大疊訂購單在那,要等我真的要用到時才會抽出一張來用(實體化)      longorderNumber=123456789000000L;//這是一個屬性,是一個很長的數字,所已宣告形態不是int而是long,之後你如果有Order的實體就可以用他      publicvoidadd(){//這是一個方法,你之後若叫出一個Order的實體(拿出一張真正的訂購單),就可以叫出這個方法(加東西到訂單裡),他會列印以下文字      System.out.println("加入新東西到購物單裡,騙你的。

");   }   publicvoiddelete(){//這也是一個之後可以呼叫的方法(把訂單裡的東西刪除),會列印文字      System.out.println("刪除購物單裡的舊東西,騙你的。

");   }      publicstaticvoidmain(String[]args){      OrdermyOrder=newOrder();      //(等號左邊)產生了一個真正的、屬於你的訂單      //(等號右邊)你幫訂單取了一個名字叫myOrder,並且告訴電腦myOrder這個東西是個訂單      //於是電腦知道你有訂單,有add跟delete兩個方法,且還有一個訂單號碼orderNumber(屬性)      myOrder.add();      myOrder.delete();      //利用(變數)名稱.方法來呼叫方法      for(inti=0;i<5;i++){          System.out.println(myOrder.orderNumber+i);//一樣用「名稱.屬性」的方式來把數字叫出來,並做出計算      }   } } 加入新東西到購物單裡,騙你的。

刪除購物單裡的舊東西,騙你的。

123456789000000 123456789000001 123456789000002 123456789000003 123456789000004 static是一種類別變數(也叫靜態變數),他雖然長在類別裡,但是從一出生就被分配好記憶體了,也就是一出生就有實體了,所以不需要先new再操作 但是還是得讓電腦知道他哪來的,所以使用方式是「類別名稱. 方法」或者「類別名稱. 屬性」 packagetw.xxx.xxx.copy.oop;   classTestForStatic{   staticintnum=123;//可以直接使用的屬性   staticvoidprintString(){//可以直接使用的方法      System.out.println("呼叫成功");   } }   publicclassCallTestStaticEx1{     publicstaticvoidmain(String[]args){      System.out.println(TestForStatic.num);//可以直接用類別.屬性名稱呼叫      TestForStatic.printString();//同上   } } 123 呼叫成功 變數(屬性)有分幾種, 一種在類別裡但不在方法裡,稱為實體變數,跟類別共存亡,類別被new了他才會出現 一種是靜態變數(類別變數)如上面的例子,你把它寫下來時他就有記憶體可以放了,所以可以直接叫他,同樣的也有不用new就存在的靜態方法,關鍵字是static 上面兩種都屬於全域變數。

還有一種變數存在在方法裡,你new類別時他不在,你把呼叫方法時他才出現,並且跟方法共存亡,他叫區域變數 packagetw.XXX.myfirstproject.oop;   publicclassTestVariableScopeEx1{   inta=1;//instance(實體變數),位於類別之下,方法之上   //變數跟物件一起(有new才行產生,所以得先=newTestVariableScopeEx1才能用a)   staticintb=2;//static變數跟class一起,屬於類別非物件(不用先用new,可直接使用b)      publicvoidf1(intc){//c為local變數,跟方法f1一起出現一起消失      intd=4;//d為local變數,跟方法一起出現一起消失            System.out.println("a="+a);      System.out.println("b="+b);      System.out.println("c="+c);      System.out.println("d="+d);      System.out.println("---------以上屬於f1方法--------");         }      publicstaticvoidf2(inte){     //注意這行有static,上面f1沒有,所以f2這個方法可以直接使用,f1不行(f1要new,產生實體)      //System.out.println("a="+a);//a為實體變數,要new過才能用,但f2可以直接使用,所以會compileerror      System.out.println("b="+b);      //System.out.println("c="+c);//compileerror c跟d為f1的區域變數,無法使用      //System.out.println("d="+d);//compileerror      System.out.println(e);      System.out.println("---------以上屬於f2方法---------");   }     publicstaticvoidmain(String[]args){    f2(6);//f2是類別變數,可直接使用      //f2是static變數,不需要先呼叫,但f1就需要      TestVariableScopeEx1scope=newTestVariableScopeEx1();      //呼叫,產生實體      scope.f1(3);      scope.f2(5);//其實這樣叫f2也行,但是電腦會警告(?)      TestVariableScopeEx1.f2(6);//f2也可以用類別名稱來呼叫   } } b=2 6 ---------以上屬於f2方法---------f2(6) a=1 b=2 c=3 d=4 ---------以上屬於f1方法--------scope.f1(3) b=2 5 ---------以上屬於f2方法---------f2(5) b=2 6 ---------以上屬於f2方法---------TestVariableScopeEx1.f(6)   全站熱搜 創作者介紹 乙方 學習筆記專區 乙方發表在痞客邦留言(0)人氣() E-mail轉寄 全站分類:進修深造個人分類:【Java】雜此分類上一篇:【Java】基本迴圈for中的標籤(break後要跳到哪裡?) 此分類下一篇:【Java】物件導向中new的一些差異(地址)、無限制參數方法(Varargs) 上一篇:【Java】基本迴圈for中的標籤(break後要跳到哪裡?) 下一篇:【Java】物件導向中new的一些差異(地址)、無限制參數方法(Varargs) 歷史上的今天 2016:【Java】抽象類別小練習 2016:【Java】一點點import、日期語法 2016:【Java】封裝、資料型別轉換、字串語法、toString改寫 2016:【Java】類別的建構子,與一點點匿名物件、this 2016:【Java】「==」跟「equals」 2016:【Java】物件導向中new的一些差異(地址)、無限制參數方法(Varargs) ▲top 留言列表 發表留言 站方公告 [公告]2022/09/02相簿、部落格功能維護公告[公告]2022/08/22、08/23應用市集部分功能維護公告[公告]痞客邦APP全新服務上線-美食優惠券 活動快報 痞客邦來吧!旅遊趣 【痞客邦來吧!旅遊趣】需要網友們一起來分享你部... 看更多活動好康 我的好友 熱門文章 文章分類 【前端網頁開發技術】(4) 【HTML】基本格式(4)【JavaScript】(24)【JQuery】(14)【CSS】基本語法(8) 【JAVA】(4) 【Java】繼承與多形(11)【Java】雜(13)【Java】介面與多形(1)【Java】Collection與Map(2) 【SQL】(6) 【SQL】基本語法(10)【SQL】設計實作(2)【SQL】進階查詢語法(9)【SQL】資料的新增、修改、刪除(2)【SQL】其他(3)【T-SQL】(0) 【JDBC】(1) 【JDBC】基本(15) 【WebSecurity】(4)【Android】(13)【Spring】(22)【Struts】(9)【Servlet與JSP】(7)【每周練習】(0) 最新文章 最新留言 動態訂閱 文章精選 文章精選 2016六月(51) 2016五月(12) 2016四月(43) 2016三月(67) 所有文章列表 文章搜尋 新聞交換(RSS) 誰來我家 參觀人氣 本日人氣: 累積人氣: QRCode POWEREDBY (登入) 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2022PIXNET 關閉視窗



請為這篇文章評分?