1. 程式人生 > >面向物件的基本特性

面向物件的基本特性

面向物件

面向物件:將功能封裝進物件,強調了具備功能的物件

面向過程:強調的是功能的行為

oop:繼承 封裝 多型

類之間的關係 關聯關係 本類中其他類的使用 繼承關係 繼承其他類 聚合關係

棧:物件的引用區域性變數 堆:new出來的東西(包含成員變數)

成員變數:定義在類裡 作用域內:類 修飾符 private protected 預設 public 宣告的時候不顯示值,不同的資料型別會有不同的預設初始化值,成員變數存放在堆中

區域性變數:方法內定義 作用域:方法體內 沒有修飾符,與所在的方法一致 一定要顯示的賦值,存放在棧中

方法的過載

方法名相同,引數的型別和引數個數不同,與是否是void or int等無關

面向物件程式設計的三條主線:

1.類以及類的構成成分:屬性 方法 構造器 程式碼塊 內部類

2.面向物件程式設計特徵:封裝性 繼承性 多型性 (抽象性)

3.其他的關鍵字 this super package import static final abstract interface

匿名類物件的使用

建立物件的時候是匿名的 new Cicle().show()

  1. 只需要一次呼叫類的物件時,可以考慮使用匿名的方式建立類的物件

  2. 特點:建立的匿名類的物件只能呼叫一次 說明:在堆中建立一個匿名物件,沒有物件的引用,一次呼叫後,在棧中沒有物件的引用,JVM認為是垃圾,啟動垃圾回收機制

可變形參的使用

public int sum(int i) {
    return i;
}

public int sum(int i, int j) {
    return i + j;
}
public int sum(int i, int j,int k) {
    return i + j+k;
}
//等同於
public int sum(int ... i){
    int sum = 0;
    for (int j = 0; j < i.length; j++) {
        sum+=i[j];
    }
}

格式: 在方法的引數型別定義上,資料型別 … 引數名

可變個數形參的方法與同名的方法之間構成過載

可變個數的形參在呼叫時,個數從0開始,到無窮多個

方法的引數傳遞

1.形參 方法宣告時的引數

2.實參:呼叫方法時,實際傳遞的值

傳遞規則:java中引數傳遞機制,值傳遞機制

1.形參是基本資料型別的 將實參的值傳遞給形參

2.形參是引用資料型別的:將實參引用型別變數的值(對應的堆空間的物件實體的首地址值)傳遞給形參的引用型別變數

棧空間:

堆空間:

Test t = new Test(); //必須建立一個物件

    int i=3;
    int j=9;
       t.swap(i,j);
       //在棧空間建立了 ij  同時在棧空間建立了 ij 呼叫swap 只是改變了棧空間形參中ij的值
            System.out.println("i:"+i+"j:"+j);
}
 void swap(int i, int j)
 {
    int temp;
    temp = i;
    i = j;
    j = temp;
}

對比

public class Test {
    public static void main(String[] args) {
        Test tt = new Test(); //棧中建立了tt引用
        Sw s = new Sw();//棧中建立了s的引用 指向了堆中的 ij
        System.out.println("i:" + s.i + "j:" + s.j);
        tt.swap(s);
        System.out.println("i:" + s.i + "j:" + s.j);
    }
    void swap(Sw swa) {
        //交換了堆中的值
        int temp;
        temp = swa.i;
        swa.i = swa.j;
        swa.j = temp;
    }
}
class Sw {
    //在堆中建立了 i,j並賦值
    int i = 9;
    int j = 56;

}