1. 程式人生 > >Java面向物件(3)

Java面向物件(3)

1.abstract 關鍵字 abstract是抽象,是一個修飾符,方法或者類的修飾符。 1.1abstract可以修飾的物件 方法–抽象方法 類— 抽象類 1.2抽象的方法 格式:必須有abstract修飾,沒有方法體。 Public abstract 返回值型別 方法名稱(引數列表); 說明: 抽象方法是一個沒有方法體的方法,沒有具體的方法實現; 只是方法的宣告、只有原型,沒有具體的實現。 抽象方法就是沒有完成的方法。意味著不能直接使用,被別人去重寫。 1.3抽象類 格式: Public abstract class 類名{ } 抽象類也可以認為是一個沒有完成的類,不能被例項化。 1.4抽象類和抽象方法的關係 有抽象方法的類必須是抽象類 抽象類可以有抽象方法,也可以有例項方法。 1.5 抽象類和抽象方法的使用 一般情況向都是建立一個子類繼承抽象類,在子類中重寫抽象方法。 1.6abstract的使用場合 當一個父類應該具有這個方法,但是在父類中不知道如何給出具體的實現時使用抽象方法;

2.final 關鍵字:修是誰,誰不可變 inal 最終的 在java中一般用於宣告常量。 Final 表示最終的結果,不可以改變。 2.1 final可以修飾的3個地方 屬性和變數:其值不能改變 方法:方法不變,方法不能被重寫 類:類不變,類不能被繼承 2.2 final修飾引用資料型別 Public class A{ Private Int num; Public void setNum(int num){this.num=num;} Public int getNum(){return num;} } Final A a=new A(); a.setNum(23);//正確 a=new A();//錯誤 final修飾的是引用a,代表引用(地址)不可改變,意味著不能指向新的()空間 在這裡插入圖片描述

3.static 關鍵字 Static 靜態,是一個修飾符 3.1 static關鍵字可以使用的4個地方 方法 類 屬性(變數) 程式碼塊 3.2 靜態屬性:static修飾屬性 Static int i=10; 變數i就是靜態屬性。 對於靜態的內容在訪問上有新的格式:類名.靜態屬性 3.3靜態與例項 例項屬性:需要例項化後 才載入 存放在堆中 靜態屬性:又稱為類屬性。 因為靜態屬性屬於整個類的屬性,這個類和這個類的例項都可以訪問。 例項屬性屬於例項的。必須先建立例項才能由例項訪問這個例項屬性。 靜態的,也叫類的,內容屬於整個類所有,類和例項都可用 例項的,內容屬於每個例項所有,只能這個例項本身可用。 靜態內容在整個應用程式中只有一份。 在這裡插入圖片描述

3.4靜態方法:不能被繼承 被static修飾的方法; 訪問方式:類名.靜態方法的名稱();(推薦方式) 靜態方法中不能使用例項屬性 靜態方法中也不能使用this. 靜態方法中只能使用靜態變數 靜態方法不能被繼承 3.5靜態程式碼塊 {}程式碼塊 Static{ } 靜態程式碼塊 作用:為類中的靜態屬性初始化 靜態程式碼塊的執行比構造方法更靠前,只是在類載入的時候執行一次,只執行一次。 在java中有一組靜態方法的類,稱之為工具類。這種類中的所有內容都是靜態的,方法也是基本功能的方法。 例如:Math類 Arrays類。

4.介面 是特殊的抽象類 4.1如何建立一個介面 關鍵字:interface 格式: Public interface 介面名稱{ Public static final公共靜態常量; Public abstract 公共抽象方法 } 4.2如何使用類實現介面 實現關鍵字:implements 格式: Public class 類名 implements 介面名稱{ } 4.2介面的細節內容 介面與介面直接可以有繼承關係 在Java中只支援單繼承,但是支援多實現 Java中的類可以繼承一個父類的同時實現介面 //既有繼承又有實現的時候,先繼承後實現 public class Student extends Person implements MyInter,MyInter2{} 4.3介面也支援多型 繼承關係中:父類的引用指向子類的例項 父類 引用= new 子類(); 實現關係:介面的引用指向實現類的例項 介面 引用=new 實現類();

5 介面的應用 類是對大量物件的抽象; 父類是對大量子類的抽象; 介面是對行為的抽象; 介面代表了一個種行為和能力。 拍照本身是一個行為; 學生要拍照; 能有拍照行為的物件:相機 手機 筆記本 Public class Student(){ Public void 拍照(拍照行為的介面 引用){ 引用.拍照行為(); } } 6.介面也可以表示一種規範

7.介面與抽象類的對比 介面特性 介面不可以被例項化 實現類必須實現介面的所有方法 實現類可以實現多個介面 介面中的變數都是靜態常量 兩者的區別: 介面是公開的,裡面不能有私有的方法或變數,而抽象類是可以有私有方法或私有變數的 實現介面的一定要實現接口裡定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法 介面可以實現多重繼承,而一個類只能繼承一個超類,但可以通過繼承多個介面實現

8.String 類 8.1String是一個極為特殊的類,有常量池的存在 一下的程式碼中,s1物件首先去常量池中查詢是否有“abc”常量的存在,沒有即在常量池中建立了物件“abc”;s2首相去常量池中查詢是否有“abc”常量的存在,如果有,直接指向該常量,如果沒有才建立。 所以:s1==s2的結果是true 在這裡插入圖片描述 8.2String類中常用的方法 8.2.1boolean equals() 判定兩個字串的內容是否相同 8.2.2char charAt(int pos) 得出pos位置的字元 在這裡插入圖片描述 8.2.3int length() 獲取字串的長度 8.2.4String[] split() 按指定字元分割字串 8.2.5boolean startWith(String s) 判定字串是否是以字串S開頭 8.2.6 trim() 去掉兩端的空格 8.2.7 String substring(int begin,int end) 字串的擷取 8.2.8compareTo()和compareToIgnoreCase() 字串比較大小:返回值:0 整數 負數 8.2.9indexOf() 查詢字元或者子串第一次出現的地方 8.2.10lastIndexOf() 查詢字元或者子串最後一次出現的地方 8.2.11concat() + 連線兩個字串 8.2.12replace() 替換 用一個字元在呼叫字串中所有出現某個字元的地方進行替換 8.2.13toLowerCase() 轉換為小寫 8.2.14toLowerCase() 轉換為小寫 8.3.15getBytes() 將字元儲存在位元組陣列中

9 日期轉換SimpleDateFormat

10 包裝類 java5.0開始支援自動裝箱和自動拆箱,包裝類的變數可以被賦值為一個基本型別——裝箱;基本型別的變數可以被賦值為一個包裝類。 //自動裝箱 Integer itg = 123; //自動拆箱 Int i= Integer.valueOf(111); 注意 程式中少量的自動拆箱和裝箱可以,但是大量的拆箱和裝箱會對效率影響較大,所以儘量需要什麼型別就宣告什麼型別

11內部類 內部類:在一個類(A)的內部 建立一個新的類(B) B就是A的內部類 11.1內部類的分類 成員內部類 格式:類的內部巢狀類 使用: 在類的內容使用 在類的外部使用 11.2靜態內部類 在成員內部類的基礎上使用static 修改時。 使用: 在外部類中使用與成員內部類一樣 靜態內部類只能使用外部類的靜態的屬性和靜態的方法 在外部使用: //在類的外部使用靜態內部類 InnerClass in=new OuterClass.InnerClass(); 靜態內部類與成員內部類的區別: 在其他類建立內部類物件時,建立的語法不同 在靜態內部類中只能訪問外部類的靜態成員,可以定義靜態方法 在成員內部類中能訪問外部類中所有靜態成員、非靜態成員,但不可以定義靜態方法 11.3區域性內部類 只能定義在方法的內部 PS:區域性內部在訪問區域性變數時,區域性變數必須宣告成final 11.4匿名內部類 匿名:沒有類名 使用格式: New 類名(){ }; 只要用來實現一次抽象類或者介面的例項化。 抽象類 名=new 抽象類();//錯誤 抽象類 名=new 抽象類(){ @Override 抽象方法(){ } };