一、面向物件
- 定義【面試必備】:面向物件是一種編程思想,物件是指現實生活中的具體存在事物,是類的具體描述,【例如:一輛超跑跟超跑設計圖紙==》圖紙即為類,造出來的超跑就是物件】,
- 類是指一組具有相同或者相似的屬性、行為的統稱,是物件的抽象,
- 類的創建:
/** * 創建Dog類 * 抽取狗子的特征,定義為屬性 * 抽取狗子的行為,定義為方法 * @author Dushine2008 * */ public class Dog { // 屬性--品種-哈士奇、年齡-3、名字-道哥、顏色-黑白 String breed; int age; String name; String color; // 方法 public void eat(String food) { System.out.println("狗子喜歡吃:" + food); } public void sleep(int hour) { System.out.println("我們家的狗子每天睡覺時長是" + hour); } } - 物件的創建:【類是物件的模板,可以使用類創建出無數個具體的物件】
- 語法格式:類名 物件名 = new 類名(引數串列);
-
public class DogTest { public static void main(String[] args) { Dog dog = new Dog(); // 呼叫方法 dog.eat("骨頭"); dog.sleep(8); // 呼叫屬性,屬性如果沒有提前賦值,得到的是默認值 int age = dog.age; System.out.println(age); // 給dog的屬性賦值 dog.breed = "哈士奇"; dog.name = "二哈"; dog.age = 3; dog.color = "黑白"; // 呼叫dog的屬性 System.out.println("狗子的品種是:" + dog.breed); System.out.println("狗子的名字是:" + dog.name); System.out.println("狗子的年齡是:" + dog.age); System.out.println("狗子的顏色是:" + dog.color); } } - 圖解【創建單個物件】:

-
圖解【創建多個物件】:
-

二、區域變數和實體變數
| 型別 | 區域變數 | 實體變數(成員變數) |
| 定義位置 | 方法內部 | 類中方法外 |
| 存盤位置 | 堆疊記憶體 | 堆記憶體 |
| 默認值 | 無,必須賦值在使用 | 有默認值,和資料型別有關 |
| 作用范圍 | 整個方法 | 整個類 |
| 生命周期 | 創建方法到方法的結束 | 隨著物件的創建而創建,物件的消失而消失 |
| 命名沖突 | 方法中不能存在重名的變數 | 可以和區域變數重名,區域變數優先級高 |
三、實體方法
- 定義:創建方法后可以使用物件呼叫的方法,每個方法都是獨立存在的,不能寫在其他方法中,不能使用static修飾,使用static修飾就變成類方法,
- 案例:
public class Student { // 屬性 String name; /** * 見面打招呼的方法【實體方法】 * @param word 打招呼的內容 */ public void sayHi(String name) { System.out.println(name+"是一個好學生); } //呼叫實體方法 public static void main(String[] args) { // 創建學生物件stu01 Student stu01 = new Student(); stu01.name = "張飛"; //呼叫實體方法 stu01.sayHi("我乃燕人張翼德"); } }
四、方法多載
- 多載(Overload):一個類中定義多個相同名稱的方法
- 要求:方法名相同;引數串列不同(型別、個數、順序);與訪問修飾符、回傳值型別無關
- 注意:呼叫帶有多載方法時,需要根據傳入的實參去找到與之匹配的方法,
- 好處:靈活、方便、屏蔽使用差異,
五、構造方法
- 定義:構造方法是一種特殊的方法,創建物件時候呼叫,方法名必須和類名一致,沒有回傳值型別,無法在外部手動呼叫
- 語法格式:public 類名(引數串列){ 構造方法體 }
- 案例:
public class Demo01 { public static void main(String[] args) { //呼叫無參構造方法 Stu stu01 = new Stu(); System.out.println("=============="); //呼叫有參構造方法 Stu stu01 = new Stu(“張三”,25); } } class Stu{ //無參構造方法 public Stu() { System.out.println("我是Stu空參的構造方法"); } // 屬性name和age String name; int age; //有參構造方法 public Stu(String name,int age) { System.out.println("我是Stu空參的構造方法"); } } - 默認構造方法:在我們創建類的時候,如果沒有寫任何的構造方法,jvm會贈送一個空參的構造方法,若自己定義了則不贈送
六、this
- 定義:This是類中的默認參考,代表當前實體
- 當類服務于某個物件時,this則指向當前物件
- this的用法
- 第一種用法【呼叫實體屬性、實體方法】
- 如:this.name、this.sayHi()
- 案例:

- 第二種用法【呼叫本類的其他構造方法】
- 如this()、this(實參)
- 案例:

- 第一種用法【呼叫實體屬性、實體方法】
七、ATM小案例:
import java.util.Scanner;
public class Demo07 {
public static void main(String[] args) {
/**
* 銀行ATM
模擬銀行賬戶業務,實作存款、取款和余額查詢,運行效果如下所示:
1.存款 2.取款 3.查詢 0.退出
請選擇你要辦理的業務:1
請輸入存款金額:1000
---------
存款成功!
1.存款 2.取款 3.查詢 0.退出
請選擇你要辦理的業務:2
請輸入取款金額:100
---------
取款成功!
1.存款 2.取款 3.查詢 0.退出
請選擇你要辦理的業務:3
---您當前賬戶余額:900元---
1.存款 2.取款 3.查詢 0.退出
請選擇你要辦理的業務:0
O(∩_∩)O謝謝您的使用,歡迎下次光臨!
*/
Scanner in = new Scanner(System.in);
// 創建銀行卡
ATM atm = new ATM(1000);
// 開啟死回圈,不斷提示用書輸入資料
outer:while (true) {
System.out.println("1.存款 2.取款 3.查詢 0.退出\r\n請選擇你要辦理的業務:");
int select = in.nextInt();
switch (select) {
case 0:
System.out.println("O(∩_∩)O謝謝您的使用,歡迎下次光臨!");
break outer;
// 存款的操作
case 1:
System.out.println("請輸入存款金額:");
int m1 = in.nextInt();
atm.saveMoney(m1);
System.out.println("成功存入金額:" + m1 + ",余額:" + atm.getBalance());
break;
// 取款的操作
case 2:
System.out.println("請輸入取款金額:");
int m2 = in.nextInt();
double ret = atm.takeMoney(m2);
// 判斷ret是否大于0
if (ret == m2) {
System.out.println("成功取出:" + m2 + ",余額:" + atm.getBalance());
}else {
System.out.println("余額不足");
}
break;
// 查詢余額
case 3:
System.out.println("當前賬戶余額:" + atm.getBalance());
default:
System.out.println("輸入有誤,請再次輸入...");
break;
}
}
}
}
/**
* 自助柜員機
* 定義了余額
* 定義存、取、查詢的方法
* @author Dushine2008
*
*/
class ATM{
// 屬性:余額
double balance;
// 構造方法
public ATM() {}
public ATM(double balance) {
this.balance = balance;
}
// 存錢
public void saveMoney(int money) {
this.balance += money;
}
// 取錢
public double takeMoney(int money){
// 判斷余額是不是充足
if (money <= balance) {
this.balance -= money;
return money;
}
return 0;
}
// 查詢
public double getBalance() {
return this.balance;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29066.html
標籤:Java
