1. 程式人生 > 其它 >SpringBoot專案的出現java.io.FileNotFoundException: (系統找不到指定的路徑。)

SpringBoot專案的出現java.io.FileNotFoundException: (系統找不到指定的路徑。)

技術標籤:初學者入門案例java

標題 面向物件

面向物件基礎 一


# 概念:
所謂的面向物件是一種程式設計思想,通過這種思想可以把生活中的複雜事情變得簡單化,從原來的執行者變成了指揮者,面向物件是基於面向過程而言的。
我們經常說的面向物件的程式設計實現(OOP Object Oriented Programming)
# 面向物件有三個特徵,分別為:
1. 封裝性 2. 繼承性 3.多型
封裝性:把相關的資料封裝成一個“類”元件。
繼承性:是子類自動共享父類屬性和方法,這是類之間的一種關係。
多型:主要體現在增強軟體的靈活性和重用性。
## 其中類和物件
### 類
1. Java語言最基本單位就是類,類似於型別。
2. 類是一類事物的抽象。
3. 可以理解為模板或者設計圖紙。
### 物件
每個物件具有三個特點:物件的狀態,物件的行為和物件的標識。
1. 物件的狀態用來描述物件的基本特徵。
2. 物件的行為用來描述物件的功能。
3. 物件的標識是指物件在記憶體中都有一個唯一的地址用來和其他物件區分開來。
4. 類是一類事物的抽象,物件是具體的實現。
### 類和物件的關係:
1. 計算機語言是用來描述現實世界事物的。屬性+行為
2. 那怎麼通過java語言描述呢? 通過類來描述事物,把事物的屬性當做成員變數,把行為當做成員方法。
例如:
分析手機事物:
屬性:顏色,尺寸,品牌,價格。。。
方法(功能):打電話,發簡訊,聽音樂。。。
類:手機類,抽取相同的屬性和行為
物件:可以按照模板生產很多個手機,比如1號手機物件,包含特有的成員變數和成員方法
#類和物件的建立和使用
##類的建立使用
通過class關鍵字建立類,通過new關鍵字建立物件

*[HTML]:首先建立一個子類,在子類裡面定義屬性和行為,再在main方法裡面呼叫子類裡面的屬性和行為(或者說功能)。
class Person{
*[HTML]:定義屬性--成員變數
	String name;
	int age;
*[HTML]:定義行為功能--方法
	void eat(){
	System.out.println("第一個方法")}
	void sleep(){
	System.out.println("第二個方法")}
}
public class Test1{
	public static void main(String[] args){
		*[HTML]:建立物件並給屬性賦值
		Person p = new Person();
		p.name="list";
		p.age="20";
		*[HTML]:呼叫方法(功能)
		p.eat();
		p.sleep();
		*[HTML]:p是引用物件,持有了對於Person物件的地址值的引用,此時的p,含有屬性,但開始都是預設值,後面才會賦值。
		
	}
}
## 物件在記憶體中的儲存
	java把記憶體分成5大區域,我們重點關注棧和堆。
		棧(stack):用來儲存程式的區域性變數(但不包括static宣告的變數,static修飾的資料存放於資料段中)。除此之外,在函式被呼叫時,棧用來傳遞引數和返回值。相當於在{}中宣告的變數。
		堆(heap):用於儲存程式執行中被動分配的記憶體段,它的大小並不固定,可動態的擴張和縮減。操作函式(malloc/free)
		BSS段(bss segment): 通常用來儲存程式中未被初始化的全域性變數和靜態變數的一塊記憶體區域。BSS是英文Block Started by Symbol 的簡稱。BSS段輸入靜態記憶體分配。
		資料段(data segment):通常用來儲存程式中已被初始化的全域性變數和靜態變數和字串的一塊記憶體區域。
		程式碼段(code segment):通常是指用來儲存程式可執行程式碼的一卡記憶體區域。這部分割槽域的大小在程式執行前就已經確定,並且記憶體區域通常屬於只讀,某些架構也允許程式碼的為可寫,即允許修改程式。在程式碼段中,也有可能包含一些只讀的常數變數,例如字串常量。
	1. 一般來講區域性變數存在棧中,方法執行完畢記憶體就被釋放。
	2. 物件(new出來的東西)存在堆中,物件不再被使用時,記憶體才會被釋放。
	3. 每個堆記憶體的元素都有地址值。
	4. 物件中的屬性都是有預設值的。
## 單一物件記憶體圖
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201225092748798.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NUQV9U,size_16,color_FFFFFF,t_70#pic_center)
1. 在棧記憶體中,建立一個引用變數p,持有物件的地址值。
2. 在堆記憶體中,建立Person物件,並且開闢變數的空間,完成初始化。
3. 給堆記憶體中的元素,分配一個唯一的標誌,地址值。交給p去儲存。
4. p.name="list"; p.age=20; 就去堆記憶體中找唯一的地址值,找到Person物件,並物件起屬性進行修改賦值。
5. p.eat(); 就去堆記憶體中找唯一的地址值,找到Person物件,執行Person物件的方法。