Java入門 面向物件第一天
阿新 • • 發佈:2019-07-29
面向物件
人為抽象的一種程式設計模型,在理解面向物件的程式碼時要按照抽象的模型來理解,不能只從程式碼字面來理解複雜的問題,學會拆分成一個一個獨立的小問題,通過解決每一個小問題,最後解決一個大問題
類
類是事物,演算法,邏輯,概念等的抽象,用來封裝這型別相關的資料和方法程式碼,封裝成獨立元件,可以把類理解成模板,或者圖紙.在建立類物件時就相當於按著這個模板來建立
物件
從類建立來的具體例項,每個例項佔用獨立的記憶體空間,儲存各自的屬性資料,例項可以單獨控制,讓例項去執行指定方法中的程式碼.
引用
儲存一個例項物件的記憶體地址用引用變數,將地址值賦值給變數,用變數去呼叫一個例項,可以理解成遙控,只需要用引用去操作就行了.
這裡以一個例子來了解:
專案:day0101_士兵
類:day0101.Test1類和Solder類
Solder類程式碼:
1 package day0101; 2 3 4 5 import java.util.Random; 6 7 8 9 /* 10 11 * 封裝 12 13 * 相關資料,邏輯運算方法, 14 15 * 封裝成一個"類"元件 16 17 */ 18 19 public class Solder { 20 21 //成員變數 22 23 int id; //預設值0 24 25 int blood = 100; 26 27 28 //成員方法 29 30 public void go() { 31 32 System.out.println(this.id+"號士兵前進"); 33 34 } 35 36 public void attack() { 37 38 if (blood == 0) { 39 40 System.out.println( 41 42 "這是"+id+"號士兵的屍體"); 43 44 return;//方法到此結束 45 46 } 47 48 System.out.println(id+"號士兵進攻"); 49 50 //模擬受到傷害,血量減少 51 52 //產生一個隨機減血量 53 54 int d = new Random().nextInt(10); 55 56 blood -= d;//血量減少 57 58 if (blood < 0) {//如果血量變成負數,重置成0 59 60 blood = 0; 61 62 } 63 64 System.out.println("血量: "+blood); 65 66 if (blood == 0) { 67 68 System.out.println(id+"號士兵陣亡"); 69 70 } 71 72 } 73 74 }
Test1類程式碼:
package day0101; public class Test1 { public static void main(String[] args) { //新建 Soldier 例項 //再把它的記憶體地址值,儲存到 s1 變數 /* s1 = { * id: 0, * blood: 100 * } */ Solder s1 = new Solder(); /* s2 = { * id: 0, * blood: 100 * } */ Solder s2 = new Solder(); //用s1變數找到士兵的記憶體空間,訪問它的id變數 s1.id = 9527; s2.id = 9528; //用s1變數找到士兵的記憶體空間,讓它去執行go()方法程式碼 s1.go(); s2.go(); s2.attack(); s1.attack(); } }
構造方法
新建例項時,執行的一種特殊方法 new Solder()
Java的類中必須有構造方法,如果自己不定義構造方法,編譯器會新增預設的空構造方法
class Solder{ public Solder(){ } }
上面的程式碼是自己新增的一個空構造方法,當你不新增是,編譯器也是自動生成空構造方法,什麼也不做
構造方法的作用
建立一個例項之後,立即執行的一個特殊方法,構造方法中的程式碼可以任意編寫,完成任意功能或執行任意運算,構造方法一般的作用是給成員變數賦值.成員變數是定義在類中的變數.
this用法
this.id
id是成員變數,當用建構函式給成員變數賦值時:
public class A{ int id; public A(int id){ this.id=id; } }
this.id表示的是成員變數id.
this(a,b)
a,b是括號中的引數,this(a,b)表示呼叫引數為兩個構造方法
public class A{ int id; int a; public A(int id){ this(id,5) } public A(int id,int a){ this.id=id; this.a=a ; } }
this()要在程式碼的首