1. 程式人生 > 實用技巧 >隨堂筆記6

隨堂筆記6

隨堂筆記6

面向物件程式設計

  1. 面向物件程式設計的本質就是:以類的方式組織程式碼,以物件的組織(封裝)資料

  2. 抽象

  3. 三大特性:封裝,繼承,多型

方法的呼叫以及物件建立呼叫

  1. 可以呼叫不同package(包)中不同類(class)的函式,加有static關鍵字可直接呼叫,其它的只能通過new一個物件將函式例項化,通過呼叫例項化物件呼叫函式

  2. 無static函式

    //Student類
    package com.yyl.oop;

    public class Student {
    public void say(){
    System.out.println("學生說話了");
    }
    }
    //主函式demo01
    package com.yyl.oop;

    public class demo01 {
    public static void main(String[] args) {
    //物件型別 物件名字 =物件值;此處物件值為一個例項化物件
    Student student=new Student();
    //student代替Student類
    student.say();
    }
    }
  3. 帶有static函式的

    //Student類
    package com.yyl.oop;

    public class Student {
    public static void say(){
    System.out.println("學生說話了");
    }
    }
    //主函式demo01
    package com.yyl.oop;

    public class demo01 {
    public static void main(String[] args) {
    Student.say();
    }
    }
  4. static區分

    1. 帶有static:和類一起載入的,類存在函式就存在

    2. 不帶static:類例項化之後才存在

  5. 例項化即new一個新物件代替原函式

引用傳遞

  1. 引用傳遞傳遞一個物件(相當於c語言傳遞一個指標)

    1、值傳遞

    在方法的呼叫過程中,實參把它的實際值傳遞給形參,此傳遞過程就是將實參的值複製一份傳遞到函式中,這樣如果在函式中對該值(形參的值)進行了操作將不會影響實參的值

    。因為是直接複製,所以這種方式在傳遞大量資料時,執行效率會特別低下。//參考計算機系統基礎的棧理論

    2、引用傳遞

    引用傳遞彌補了值傳遞的不足,如果傳遞的資料量很大,直接復過去的話,會佔用大量的記憶體空間,而引用傳遞就是將物件的地址值傳遞過去,函式接收的是原始值的首地址值。在方法的執行過程中,形參和實參的內容相同,指向同一塊記憶體地址,也就是說操作的其實都是源資料,所以方法的執行將會影響到實際物件

public class demo02 {
public static void main(String[] args) {
Person student=new Person();
System.out.println(student.name);//輸出“null”
change(student);
System.out.println(student.name);//輸出“阿deair”
}
public static void change(Person student){//引用傳遞,傳遞一個類
student.name="阿deair";//傳遞類可以改變類的值
//解釋:相當於傳遞物件的地址(指標)
}
}
class Person{//定義一個類,注意在類的外面
String name;//預設初始化為null
}

類與物件的建立

  1. 建立類

    package com.yyl.oop2;

    public class student {
    String name;
    int age;
    String num;
    int grade;
    public void study(){
    System.out.println(this.name+"在學習");//引用自己類的變數this.變數名
    }
    }
  2. 宣告物件和呼叫

    package com.yyl.oop2;

    public class demo01 {
    public static void main(String[] args) {
    //類:抽象的,例項化
    //類例項化後會返回一個自己的物件
    //xiaoming物件就是student類的具體例項
    student xiaoming=new student();
    xiaoming.name="小明";
    xiaoming.age=10;
    System.out.println(xiaoming.name);
    System.out.println(xiaoming.age);
    }
    }
  3. 總結:相當於c語言中的結構體+java的包與類的作用

    注意宣告類的時候保持類的名字和建立時的名字保持一致,否則呼叫時會有問題

構造器

  1. 構造器是類中的一種函式,函式名和類名相同,函式沒有返回型別和返回值,

  2. 構造器作用:new的本質就是呼叫構造器,有參構造可以用於初始化

package com.yyl.oop2;

public class demo02 {
public static void main(String[] args) {
student02 xiaoming=new student02("xiaoming");//預設無參構造器,不需要傳遞初始值
System.out.println(xiaoming.name);
}
}
package com.yyl.oop2;

public class student02 {
//一個類即使什麼也不寫,他也會存在一個類
String name;
//預設無參構造器,不需要傳遞引數,系統自動生成
public student02(){}

//自定義構造器,需傳遞對應型別引數,一般用於初始化
//一旦定義有參構造器,無參就必須顯示定義(刪除有參構造?)
public student02(String x){
this.name=x;
}
}

堆存放new的陣列和物件,棧存放基本變數型別和引用變數