面向對象的特征有哪些方面:
1. 抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
2.繼承:
繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類 繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或 增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。
4. 多態性:
多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。
在JAVA中基本數據類型參數的傳值和引用類型的參數傳值有什么不同?
一個是儲存在棧里,一個是存儲在堆棧里;一個是值類型的傳遞,一個是引用類型的傳遞;
基本型是傳值的拷貝,對象是傳引用的拷貝。
public class TestReference {
private int a=0;
public static void main(String[] args) {
int b = 0;
TestReference test = new TestReference();
test.modify(b);
test.modify(test);
System.out.println("After been modified b="+b);//傳值類型,不改變值,所傳的為變量的副本
System.out.println("After been modified a="+test.a);//引用類型改變所引用內容,傳遞的是只引用的一個副本
}
//傳值類型
public void modify(int a){
a++;
System.out.println("It is modifying");
}
//引用類型
public void modify(TestReference t){
t.a++;
System.out.println("It is modifying");
}
}