new對象的時候,可以一次建立多個對象。
e.g:梯形 load=new 梯形(3.0f,10.0f,20),lat=new 梯形(2.0f,3.0f,10);
static趣聞
即使在同一類中,static調用非static方法/變量,也要new一個對象。
一個類中的static方法/變量,在另一個勒種調用時,可直接用“類名.變量/方法”。
含有static的方法/變量叫做類方法/變量,不含static的方法/變量稱為執行個體方法/變量。類方法不能通路執行個體變量,但執行個體方法可以通路類變量和執行個體變量。
static int CV;
int AV;
static void setClassVar(int i){
CV=i;
//AV=i; //類方法 NO 執行個體變量
}
void setAV(int i){
AV=i;
CV=i;
}
小酌this
this——java關鍵字,表示某個對象,差別于c++中的“指針”(java不存在指針概念),this絕不能出現在類方法中,this在類的構造方法中時,代表該構造方法所建立的對象,執行個體方法必須通過對象來調用,當this關鍵字出現在類的執行個體方法中時,代表正在調用該方法的目前對象。構造函數中調用同一個類的其它構造函數時用this。
包
包是将一些類聚集在一起的一個實體,同一個包内不允許有重複的類名。
package:放源檔案首
一個包内的所有源檔案是“同類”,一個由錯則全部不能運作。
忘加包名的所有源檔案将共同屬于“無名包”。
import語句
作用:引入包中的類。
最明顯的如:java中的輸入:Scanner類。
還有,java.lang包預設為java核心包,不需要手動導入。
抽象類和接口
實作一個接口需要實作這個接口的所有方法!
(Fn+Alt+Enter ->選第一個)
一般java裡要“得到”的值是boolean類型的話,其方法字首是“is”;
e.g:
private boolean borrow;
public boolean isBorrow(){
return borrow;
}
對象傳遞 - 引用傳遞
這一部分在c/c++裡基本都學過,這裡隻給出示例:
public static void main(String[] args){
Book book=new Book("老九醉酒談java","987-7-1024",5);
BookBiz bookBiz=new BookBiz();
bookBiz.sellBook(book); //這裡book的位址就為15db9742
}
開開心心學java — 啥是類
類——對象的模闆、圖紙,可以規定對象的特征。
為什麼使用繼承?
假設我們正在開發RPG遊戲,職業有:坦克、戰士、刺客。。。(這些就是一個個類)
方案一:直接定義各個英雄類:屬性&方法
但是這樣你想一個問題:上面那些職業在英雄中一定會有重複的吧(移動、名稱…),怎麼辦呢?
方案二:使用繼承
Warrior 曹操=new Warrior();
Archmage 小喬=new Archmage(); YES 執行個體化自類對象
Hero 曹操=new Warrior(); 自類對象實作父類
Hero 小喬=new Archmage(); YES 戰士 is a 英雄 法師 is a 英雄
錯誤執行個體:
Warrior 曹操=new Hero(); 錯誤的關系
Archmage 小喬=new Hero(); NO 英雄 NOT is a 戰士 英雄 NOT is a 法師
方法重寫
重寫:在子類中提供一個對方法的新的實作。
Object:java中的所有類都繼承自:java.lang.Object;
多态 — 多麼變态
多态——同一個實體,同時具有多種形式。
需求:實作不同英雄角色的移動
如:遊戲中要行走,有一個核心類 moveRole —移動角色
public void moveRole(Warrior warrior){
warrior.move(); //移動戰士
}
public void moveRole(Hero hero){
hero.move(); //調用英雄(父類)的移動方法
}