學習Java的第三天——類和對象

今天是2020年1月26日,今天是正月初二啦,算了算,已經五六天沒看書了,今天學習Java的日程得提上來了,這個病毒讓我無法外出不得不學習,我太難了!!

1.Java程序的分類:
(1)Application(應用程序):可獨立運行的應用程序
(2)Applet(小應用程序):嵌入在網頁中的Java程序
(3)Servelt(服務器端應用程序)

2.Java的特點
(1)簡單:Java語法類似於C++:Java摒棄了C++中很少使用、難理解、容易引發錯誤的地方,比如指針、結構、聯合、操作符重載、內存管理等等
(2):面向對象:Java是真正面向對象的語言,Java語言的設計集中於對象及其接口,它提供了簡單的類機制以及動態的接口模型。
(3)分佈式
(4)健壯性:較強的查錯能力和安全的指針模型
(5)安全:Java的bug越來越少
(6)可移植性

對象和類

1.類之間的關係

(1)依賴
如果一個類的方法操作了另外一個類的對象,那麼這個類就依賴於另一個類
(2)聚合
一個類的對象包含了另一個類的對象
(3)繼承
特殊和一般的關係

2.使用現有類

(1)創建對象
Date birthday = new Data();//這樣創建的類只能使用一次
Data deadline =birthday;//deadline 和 birthday共同管理一段內存,類似於數組和字符串的使用

3.創建自己的類

3.1類的定義

3.1.1定義示例

在這裏插入圖片描述

3.1.2使用多個源文件

可以將每個類放在一個單獨的源文件中,例如
Employee 件 類放在文件 Employee.java中 中
EmployeeTest 件 類放在文件 EmployeeTest.java中

3.1.3多個源文件程序的編譯

編譯可執行類,其它被調用的類會自動編譯==

當編譯器編譯 EmployeeTest.java 時發現其中使用了
Employee 找類,它就會去尋找 Employee.class ,如果沒有找到,編譯器將自動編譯 Employee.java

當編譯 EmployeeTest.java 的時候,可以沒有源文件Employee.java 要 ,只要Employee.class

3.2分析Employee類

3.2.1一個構造器

public Employee(String n,e double s,t int year,t int month,t int day);

構造器:

(1) 構造器是用來構造對象的特殊方法,通常在構造器中給實例字段賦初值
(2)構造器和類具有相同的名字
(3)一個類可以有多個構造器
(4)有的構造器可以有0 、1、或者多個參數
(5)構造器沒有返回值
(6)返回 void 爲 也不行,因爲 void 也是類型
(7)構造器總是和 new 運算符一起被調用

3.2.2.四種方法

四種方法都被標記爲public

 public String getName ();
 public double getSalary ();
 public Date getHireDay ();
 public void raiseSalary(double byPercent);

每個方法中,關鍵字this指向隱式參數,使用方法:this.方法名
在這裏插入圖片描述

3.2.3.三個實例字段

三個實例字段都被標記爲private

private String name;
private double salary;
private Date hireDay;

(1)final實例字段
用final修飾的實例字段將不能被修改,而且這種字段在構造時必須初始化。
(2)static靜態字段
靜態字段對類的每個實例都是共享的

3.2.4.main方法

在這裏插入圖片描述

3.2.5 權限修飾符

3.2.5.1 字段修飾符

在這裏插入圖片描述

3.2.5.2 類修飾符
類的訪問控制符或爲public,或爲默認,如果爲public,則該類可以被其他類所訪問,若
爲默認,則只能被同包中的類所訪問

3.3對象構造

3.3.1默認字段初始化

如果在構造器中沒有顯示的給某個字段賦值,那麼它會被自動賦爲默認值
在這裏插入圖片描述

3.3.2初始化塊

在這裏插入圖片描述

3.4對象析構

3.4.1finalize方法

1.可以在任何類中添加finalize方法,該方法會在垃圾收集器清楚對象之前被調用
2.可以在該方法中釋放一些系統資源,如:文件句柄、數據庫連接、網絡連接等等
3.不要依賴finalize方法回收任何短缺資源
4.可以使用如下方法強制垃圾回收器工作:System.gc();
在這裏插入圖片描述

3.5 兩種其他修飾符(static、final)

在這裏插入圖片描述

3.5.1 static

3.5.1.1 static字段

1.用static修飾符修飾的字段最本質的特徵是它們是類的字段,而不是屬於一個對象實例

2.它不保存在某個對象實例的內存區間,二是保存在內存區域的公共存儲單元

3.類變量可以通過類名直接訪問,也可以通過實例對象來訪問,兩種方法的結果是相同的

4.在一定意義上,它可以表示一個全局變量

3.5.1.2 static方法

1.用static修飾符修飾的方法僅僅屬於類的靜態方法,又稱爲類方法,不用static修飾的
方法稱爲實例方法

2.類方法的本質是該方法是屬於整個類的、而不是屬於某個實例的。

3.深刻含義:非static的方法是屬於某個對象的方法,在這個對象創建時,對象的方法在
內存中擁有自己的專屬片段。而static方法是屬於整個類的,它在內存中的代碼將隨着類
的定義而進行分配和重載,不被任何一個對象專有。

4.由於static方法是屬於整個類的,所以它不能操縱和處理屬於某個對象的成員變量,而
只能處理屬於整個類的成員變量,即static方法只能處理本類中的static域或調用
static方法

5.在static方法中,不能訪問實例變量,不能使用this和super

6.調用這個方法時,應該使用類名直接調用,也可以使用某一個具體的對象名
如Math.random()

3.5.2 final

3.5.2.1 final類

如果一個類被final修飾符所修飾和限定,說明這個類不能被繼承,即不可能有子類

3.5.2.2 final方法

final修飾符所修飾的方法,是不能被子類所覆蓋的方法

3.5.2.3 final字段及局部變量

1.它們的值一旦給定,將不能更改

2.是隻讀量,它們能且只能被賦值一次,而不能被賦值多次

3.如果一個字段被static final 兩個修飾符所限定時,它可以表示常量
比如Interger.MAX_VALUE(表示最大整數)、Math.PI(表示圓周率)就是這種常量

4.關於賦值:在定義static final 域時,如果不給定初始值,則按默認值進行初始化
	   在定義final字段時,若不是static域,則必須只能賦值一次,不能缺省
	   在定義final局部變量時,也必須只能賦值一次,它的值可能不是常量,但它
	   的取值在變量存在期間不會改變

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章