?? java(day03).txt
字號:
Java第三天 2007年4月25日
1、面向對象的思想
anything is an Object(萬物皆對象)
符合人們客觀看待世界的規律
2、抽象,從對具體的對象中抽取有用信息。
對象有其固有屬性,對象的方法,即對象的行為(對象能做什么)
對象本身是簡單的(功能簡單),多個對象可以組成復雜的系統(對象之間彼此調用對方的方法)
3、面向對象的優點
1)對象應當是各司其職(功能簡單),各盡所能(把自己的功能作到最好)。(弱耦合性實現了前面所述的對象的特點)
2)對象的耦合性,是對象之間的聯系,對象和系統之間的聯系。
對象的耦合性要盡量的弱,也就是對象之間的聯系盡可能的弱,對象和系統之間的聯系盡可能的弱。
弱耦合性要通過一個標準來實現
3)可重用性
對象的功能越簡單,復用性就越好。(對象的耦合性弱,復用性就比較強)
4)可擴展性
系統的可插入性,是在系統中加入新的對象之后的系統穩定性。
對象的可替換性,是在系統中替換原有的對象之后的系統的穩定性。
4、面向過程和面向對象的比較
面向過程是先有算法,后又數據結構 --- (怎么解決問題)
面向對象是先有對象(數據結構),后有算法(對象間的方法調用) --- (用什么做)
5、類的定義
1)屬性
類型 變量名; --> 實例變量,系統賦初始值
默認值 使用范圍 命名沖突
實例變量 系統賦初始值 在類的內部使用 允許實例變量和局部變量發生命名沖突,變量的值->局部優先
局部變量 先賦值后使用 定義他的代碼塊 同范圍內不允許兩個局部變量發生命名沖突
2)方法的定義:
不允許方法的聲明和實現分開
方法聲明的組成:
(a)方法的修飾符(0或多個修飾符出現的順序無關) |
(b)方法的返回值類型 |順
(c)方法名 |序
(d)方法的參數表 |向
(e)方法中允許拋出的異常 |下
V
6、方法的重載
java中方法的重載(overload)方法名相同,參數表不同(個數,類型,排列順序),其他部分可以不同。
調用時要給出明確參數并確定調用某一方法。在編譯時,編譯器會根據參數選擇適當的方法,所以重載也叫編譯時多態。
** 方法的重載可以屏蔽一個對象同一類方法由于參數不同所造成的差異 **
向上就近匹配原則
如果方法的參數表中的數據類型和調用時給出的參數類型不盡相同時會根據向上匹配的就近原則。(類型就近向上轉化匹配)
public void m(byte a,short b){
System.out.println("m(byte,short)");
}
public void m(short a,byte b){
System.out.println("m(short,byte)");
}
此時若用2個byte作為參數調用m()方法,編譯會出錯,因為按照向上就近匹配原則,提升哪個都可以,出現語義不明確的錯誤
7、構造方法
1)方法名與類名相同,無返回值
2)系統提供默認無參的,空的構造方法
3)若自定義一個有參的構造方法,則系統將不提供無參的,空的構造方法
不能手工調用,在一個對象的生命周期中,只會被調用一次
8、對象的創建
Java在堆中創建對象的過程:
1)分配空間
2)初始化屬性,若聲明實例變量的時候沒有初始化,用默認值初始化屬性
3)調用某個構造方法(前提:不考慮繼承關系)
Student s; //聲明一個Student類的對象變量
s = new Student(); //調用Student類的無參的構造方法,創建一個對象,把這個對象的地址賦給一個Student類的引用
(引用指向了這個對象,引用中保存對象的首地址,以后都是通過引用訪問這個對象的屬性和方法)
s.age s引用所指向的對象的age屬性
9、變量
包括簡單變量(原始數據類型),對象變量。
簡單變量傳值,對象變量傳址!
static void method3(Student s){
s=new Student(); //創建一個新對象,把對象的地址賦給形參的引用
s.age=20; //改變新對象的狀態
}
Student stu=new Student();
System.out.println(stu.age); // 打印出Student類的age屬性的初始值
method3(stu); //method3方法返回,形參s指向的被改變的對象已經成為了垃圾對象
System.out.println(stu.age); //打印的仍是原來那個對象的age的值
10、this
是一個引用,指向的是自己,即當前對象(哪個對象調用了方法,哪個對象就是當前對象)
可以用來區分實例變量和局部變量。this.age = age ;
this(),他表示調用本類其他的構造方法,注,只能寫在構造方法的第一行。
項目練習:
項目名稱:Bank Account Management System 銀行賬戶管理系統 簡稱BAM
項目描述:這是一個基于C/S結構的銀行賬戶在線管理系統,用戶可以通過ATM終端界面來操作自己的銀行賬戶.
項目實施方式:這是一個同步練習,隨著達內CoreJava課程的深入,這個項目將趨于完整,學員的任務是隨著知識點的深入,完成每一個進階的項目要求.
練習1:
(面向對象基礎語法)
寫一個賬戶類(Account)
屬性:
id:賬戶號碼 長整數
password:賬戶密碼 String
name:真實姓名 String
personId:身份證號碼 String
email:客戶的電子郵箱 String
balance:賬戶余額 double
方法:
deposit: 存款方法,參數是double型的金額
withdraw:取款方法,參數是double型的金額
構造方法:
有參和無參,有參構造方法用于設置必要的屬性
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -