概念:
類:具有相同特征(屬性)和功能、行為(方法)的對象歸為一類。
對象:一類事物的某個具體實例。
格式:類的創建 public class 類名 {}
類的屬性的定義 public 屬性類型 屬性名;
類的方法的定義 public 方法返回值類型 方法名 (類型參數 參數名,....){ 方法體,方法執行的內容} 參數:方法需要使用的外部條件。
使用:對象名.屬性 對象名.方法體(參數值,......);
采用面向對象開發優點:符合程序員開發思維,便於開發。
難點:從場景中建模,提取需要的類,以及類的屬性和方法。
例子:
場景:學生在學習java課程,每次學習讓課程的課時減少1,重復學習,直到課程的課時減少為0結束,學習完成,學生的學分增加java課程的學分。
第一步:分析場景中的對象: Java課程 學生
第二步:分析對象的屬性和方法: Java課程 屬性:課時,學分,課程名 方法:\
學生 屬性:姓名,學分 方法:學習 參數:課程對象 方法體:1.讓課程課時減少1 2.判斷是否完成學習 3.獲得學分
第三步:創建類
第四步:在主方法中創建對象,按場景調用方法。
例子:
Hero.java文件
public class Hero {
private String name;
private int blood;
private int attackValue;
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getAttackValue() {
return attackValue;
}
public void setAttackValue(int attackValue) {
this.attackValue = attackValue;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Hero() {
}
public Hero(String name,int blood,int attackValue) {
this.name = name;
this.blood = blood;
this.attackValue = attackValue;
}
public void attack(Hero h) {
this.blood = blood - h.attackValue;
if(blood<=0) blood = 0;
System.out.println(h.name+"攻擊了"+name+","+name+"減少了"+h.attackValue+"血量,"+name+"當前血量為"+blood);
if(blood==0) {
System.out.println(name+"死亡了。"+h.name+"勝利,當前血量 為"+h.blood);
return;
}
}
}
TestHero.java文件
public class TestHero {
public static void main(String[] args) {
Hero h1 = new Hero("韓信",110,10);
Hero h2 = new Hero("蓋倫",100,10);
while(h1.getBlood()>0 && h2.getBlood()>0) {
h1.attack(h2);
if(h1.getBlood()<=0) break;
h2.attack(h1);
}
}
}
輸出:
蓋倫攻擊了韓信,韓信減少了18血量,韓信當前血量為92
韓信攻擊了蓋倫,蓋倫減少了20血量,蓋倫當前血量為80
蓋倫攻擊了韓信,韓信減少了18血量,韓信當前血量為74
韓信攻擊了蓋倫,蓋倫減少了20血量,蓋倫當前血量為60
蓋倫攻擊了韓信,韓信減少了18血量,韓信當前血量為56
韓信攻擊了蓋倫,蓋倫減少了20血量,蓋倫當前血量為40
蓋倫攻擊了韓信,韓信減少了18血量,韓信當前血量為38
韓信攻擊了蓋倫,蓋倫減少了20血量,蓋倫當前血量為20
蓋倫攻擊了韓信,韓信減少了18血量,韓信當前血量為20
韓信攻擊了蓋倫,蓋倫減少了20血量,蓋倫當前血量為0
蓋倫死亡了。韓信勝利,當前血量 為20
總結:采用面向對象,便於開發,要會提取場景中的對象,屬性,方法。從面向過程思維向面向對象思維過渡。