- 論壇徽章:
- 0
|
第三章Java類和對象
一. 面向?qū)ο蟪醪?br />
二. 面向?qū)ο笕筇卣鳎?br />
1. 封裝:把對象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個不可分割的獨立單位;盡可能隱藏對象的內(nèi)部結(jié)構(gòu)。
同一個類中 同一個包中 不同包中的子類對象 任何場合
Private Yes
Default Yes Yes
Protected Yes Yes Yes
Public Yes Yes Yes Yes
2. 繼承:如果一個對象A繼承自另一個對象B,就把這個A成為B的子類對象,而B成為A的父類對象。繼承可是子對象具有父對象的各種屬性和方法,而不需要再次編寫相同的代碼。同時,可以重新定義某些屬性,并重寫某些方法,即覆蓋父對象的原有屬性和方法,使其獲得與父對象不同的功能。
3. 多態(tài):同一種行為的多種不同表達,或者同一種行為的多種不同實現(xiàn)就叫做多態(tài)。
三. JAVA類的基本構(gòu)成
包:包是類接口或其他類的集合,包主要用來將類組織起來成為組,從而對類進行管理
(1) 允許將包含類代碼的文件組織起來,易于查找和使用適當?shù)念?br />
(2) 包不止是包含類和接口,還能包含其他包。形成層次的包空間。
(3) 有助于避免命名沖突。
JDK中常用的包:java.lang---包含一些java語言的核心類,包含java語言設(shè)計基礎(chǔ)的類。Object類是所有類的基類。
java.awt---包含構(gòu)成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUI)。
java.swing---定義java版的圖形用戶界面(GUI)解決方案,提供了很多完備的組建,可以對復(fù)雜的桌面系統(tǒng)構(gòu)建。
java.net---包含執(zhí)行于與網(wǎng)絡(luò)相關(guān)的操作的類。
java.io---提供多種輸入輸出功能的類。
java.util---包含一些實用工具類,如定義系統(tǒng)特性,使用與日期日歷相關(guān)的方法。還有重要的集合框架。
每個源文件只有一個包的聲明,而且包名應(yīng)該全部小寫。
編譯和生成包
帶包編譯: javac –d destpath Test.java
javac –d c:\test\ Test.java
帶包運行:java p1.Test
java類搜索方式:import語句引入p1包內(nèi)的Test類,假定環(huán)境變量CLASSPATH的值為,“.; c:jdk\lib; d:\ex”,java運行環(huán)境將依次到下述可能的位置尋找并載入該字節(jié)碼文件 Test.java
.\p1\Test.java
C:jdk6\lib\p1\Test.java
D:\ex\p1\Test.class
構(gòu)造方法:創(chuàng)建對象并初始化成員變量。創(chuàng)建對象時會自動調(diào)用類的構(gòu)造方法。
定義規(guī)則:必須與該類具有相同的名字,并且沒有方法的返回類型(包括沒有void)。一般構(gòu)造方法都用public類型來說明,這樣才能在程序的任意位置創(chuàng)建類的實例對象。
說明:每個類至少有一個構(gòu)造方法。如果不寫構(gòu)造方法,java編程語言將提供一個默認的,該構(gòu)造方法沒有參數(shù),而且方法體為空。如果一個類中已經(jīng)定義了構(gòu)造方法,則系統(tǒng)不再提供默認的構(gòu)造方法。
析構(gòu)方法:析構(gòu)方法finalize的功能是:當對象被從內(nèi)存刪除時,該成員方法將會被自動調(diào)用。
帶參數(shù)的方法被調(diào)用:先分配形參空間,然后將實參復(fù)制給形參。
參數(shù)可變的方法(JDK5.0開始):
public class Test{
public static int sum(int……n){
int total = 0;
for(int i=0; i<n.length; i++){
total += n[i];
}
Return total;
}
Public static void main(String [] args){
System.out.println(Test.sun(10,100,1000));
}
}
四. 如何使用一個java類
this關(guān)鍵字:
(1) 點去成員;
(2) 區(qū)分同名變量;
“this.變量”調(diào)用的是當前屬性的變量值,直接使用變量名稱調(diào)用的是相對距離最近的變量值。
(3) 作為方法名來初始化對象;
相當于調(diào)用本類的其他構(gòu)造方法,他必須作為構(gòu)造方法的第一句。
五. 引用類型
public class TempTest {
private void test1(A a){
a.age = 20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println("main方法中的age="+a.age);
}
}
class A{
public int age = 0;
}
運行結(jié)果:
test1方法中的age=20
main方法中的age=20
六. 變量
在方法外定義的變量被自動初始化,局部變量必須在使用前“手工”初始化。
七. 包裝類
基本數(shù)據(jù)類型 對應(yīng)的包裝類
boolean Boolean
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
Integer t = new Integer(i); 包裝,裝箱
Int j = t.intValue(); //j=500 拆箱
八. 類型轉(zhuǎn)換
強制類型轉(zhuǎn)換:
強制類型轉(zhuǎn)換只能用在原本就是某個類型,但是被表示成了另外一種類型的時候,可以把它強制轉(zhuǎn)換回來。強制轉(zhuǎn)換類型并不能在任意的類型間驚醒轉(zhuǎn)換。
變量可自動被升級為一個較長的形式。
byte—--short--—char--—int--—long--—float----double
自動包裝和解包
自動包裝:把基礎(chǔ)數(shù)據(jù)類型自動封裝并轉(zhuǎn)換成對應(yīng)的包裝類的對象。
自動解包:把包裝類的對象自動解包并轉(zhuǎn)換成對應(yīng)的基礎(chǔ)數(shù)據(jù)類型。
Integer a1=5; //自動包裝
Int a2 = new Integer(5); //自動解包
強制類型轉(zhuǎn)換:在一個類型前面加(),來強制轉(zhuǎn)換
long l = 9L;
int i = (int)l;
自動類型轉(zhuǎn)換:
int i = 5;
String str = ""+i;
向上造型:把范圍小的造型為范圍大的類型,
int i = 2;
long l = i;
九. 什么是實例變量?什么是局部變量?什么是類變量?什么是final變量?
實例變量:類中定義的變量,即類成員變量,如果沒有初始化,會有默認值;
局部變量:在方法中定義的變量,必須初始化;
類變量:用static可修飾的屬性;
final變量: final屬性只允許賦值一次,且只能通過構(gòu)造方法賦值;定義后也就是一 個常量。
定義規(guī)則和使用規(guī)則
實例變量:它不需要static關(guān)鍵字來聲明,只要對象被當作引用,實例變量就將存在;
局部變量:在方法內(nèi)任意定義變量即為局部變量;
類變量:必須用static修飾;
final變量:不可以再修改的。 |
|