Java面向對象

1、面向對象java

  • 定義【面試必備】:面向對象是一種編程思想,對象是指現實生活中的具體存在事物,是類的具體描述。【例如:一輛超跑跟超跑設計圖紙==》圖紙即爲類,造出來的超跑就是對象】。
  • 類是指一組具備相同或者類似的屬性、行爲的統稱,是對象的抽象。
  • 類的建立:
    /**
     * 建立Dog類
     * 	抽取狗子的特徵,定義爲屬性
     * 	抽取狗子的行爲,定義爲方法
     * @author Dushine2008
     *
     */
    public class Dog {
    	// 屬性--品種-哈士奇、年齡-三、名字-道哥、顏色-黑白
    	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);
      	}
      }
    • 圖解【建立單個對象】:
    • 圖解【建立多個對象】:面試

 

2、局部變量和實例變量編程

類型  局部變量 實例變量(成員變量)
定義位置 方法內部 類中方法外
存儲位置 棧內存  堆內存
默認值 無,必須賦值在使用 有默認值,和數據類型有關
做用範圍 整個方法 整個類
生命週期 建立方法到方法的結束 隨着對象的建立而建立,對象的消失而消失
命名衝突 方法中不能存在重名的變量 能夠和局部變量重名,局部變量優先級高

3、實例方法jvm

  • 定義:建立方法後能夠使用對象調用的方法,每一個方法都是獨立存在的,不能寫在其餘方法中,不能使用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("我乃燕人張翼德");
    		
    	}
    }

4、方法重載this

  • 重載(Overload):一個類中定義多個相同名稱的方法
  • 要求:方法名相同;參數列表不一樣(類型、個數、順序);與訪問修飾符、返回值類型無關
  • 注意:調用帶有重載方法時,須要根據傳入的實參去找到與之匹配的方法。
  • 好處:靈活、方便、屏蔽使用差別。

5、構造方法設計

  • 定義:構造方法是一種特殊的方法,建立對象時候調用,方法名必須和類名一致,沒有返回值類型,沒法在外部手動調用
  • 語法格式: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會贈送一個空參的構造方法,若本身定義了則不贈送

6、this3d

  • 定義:This是類中的默認引用,表明當前實例
  • 當類服務於某個對象時,this則指向當前對象
  • this的用法
    • 第一種用法【調用實例屬性、實例方法】
      • 如:this.name、this.sayHi()
      • 案例:
    • 第二種用法【調用本類的其餘構造方法】
      • 如this()、this(實參)
      • 案例:

7、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;
	}
}
相關文章
相關標籤/搜索