隨堂筆記6
阿新 • • 發佈:2020-09-10
隨堂筆記6
面向物件程式設計
-
面向物件程式設計的本質就是:以類的方式組織程式碼,以物件的組織(封裝)資料
-
抽象
-
三大特性:封裝,繼承,多型
方法的呼叫以及物件建立呼叫
-
可以呼叫不同package(包)中不同類(class)的函式,加有static關鍵字可直接呼叫,其它的只能通過new一個物件將函式例項化,通過呼叫例項化物件呼叫函式
-
無static函式
//Student類
package com.yyl.oop;
public class Student {
public void say(){
System.out.println("學生說話了");
}
}//主函式demo01
public class demo01 {
public static void main(String[] args) {
//物件型別 物件名字 =物件值;此處物件值為一個例項化物件
Student student=new Student();
//student代替Student類
student.say();
}
} -
帶有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();
}
} -
static區分
-
帶有static:和類一起載入的,類存在函式就存在
-
不帶static:類例項化之後才存在
-
-
例項化即new一個新物件代替原函式
引用傳遞
-
引用傳遞傳遞一個物件(相當於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
}
類與物件的建立
-
建立類
package com.yyl.oop2;
public class student {
String name;
int age;
String num;
int grade;
public void study(){
System.out.println(this.name+"在學習");//引用自己類的變數this.變數名
}
} -
宣告物件和呼叫
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);
}
}
-
總結:相當於c語言中的結構體+java的包與類的作用
注意宣告類的時候保持類的名字和建立時的名字保持一致,否則呼叫時會有問題
構造器
-
-
構造器作用: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;
}
}