1. 程式人生 > >這是第三波java筆記

這是第三波java筆記

name ati lib 順序執行 implement 布爾 屬性 getc lse

面向對象的特征三 多態性
1多態性指的是什麽?多態性可以理解為一個事物可以表現為多種表現形態
(1)方法的重載與重寫(2)子類對象的多態性
虛方法的調用:通過父類的引用指向子類對象,當調用方法的時,實際執行的子類重寫父類的方法
子類對象的多態性的使用的前提:(1)要有類的繼承(2)子類要有對父類方法的重寫(3)程序運行分為編譯狀態和運行狀態,編譯時看左邊,將此引用變量理解為父類類型,運行時,看右邊,關註與真正對象的實體:子類的對象,那麽執行的方法就是子類重寫的
使用搶轉符可以向下轉型
格式:instanceof 類A:判斷對象a是否是類A的一個實例是的話返回true否則faslse
若a是A的實例,那麽a也一定是A父類的實例
子類對象的多態性並不適用於屬性
equals():(1)只能處理引用類型變量。(2)在Object類,發現equals()仍然是比較兩個引用變量的地址值是否相等
比如Sting,包裝類,File類,Date類會重寫equals方法,重寫效果是比較兩個對象的實體內容是否相同
java.lang.Object
1.當我們打印一個對象的引用時,默認調用toString方法
2.當我們打印的對象所在的類沒有重寫Object中的toString方法時,name調用的就是Object中的
返回此對象所在的類以及對應的堆空間對象實體的首地址
重寫時常常將對象的屬性信息返回,可以手動實現和自動調用
@Test進行單元測試方法:
1.在前工程下 -右鍵build path-add librarier-Junit4
2.在主類中,創建一個空參的返回值方法,(如:public void test1())用於代碼測試,方法上聲明:@Test
3.導入import org.junit.Test;
4.在test1()方法中,進行代碼的編寫
5.測試,雙擊方法名,右鍵run as-junit Test即可
封裝類:對於布爾類型來講,當形參是true時返回true,除此之外都是false
默認值會改變
可以與基本數據類型相互轉化:調用包裝類XXX的XXXValue()方法 格式:int i1=i1.intValue()
JDk5.0之後,自動裝箱拆箱
基本數據類型,包裝類轉化為String類
int i1=10
(1)String str1=i1+“”;
(2)String str2=String.valueOf(i1);
Sring類轉化為基本數據類型,包裝類
int i3=Interger.parseInt(str2);
static關鍵字,靜態的,可以用來修飾屬性,方法,代碼塊,內部類
static修飾屬性(類變量)
1.有類創建的所有對象,都共用一個屬性
2.當其中一個對象對此屬性進行修改時,會導致其他對象對此屬性的一個調用
3.類變量是隨著類的加載而加載的,而且獨一份
4.靜態變量可以直接通過類.類變量的形式調用
5.類變量的加載要早於對象,
6.實例變量是隨著對象的創建而被加載的
7.類變量存在於靜態域中
static修飾方法(類方法)
1.隨著類的加載而加載,在內存中也是獨一份
2.可以直接通過"類.類方法"的方式調用
3.內部只可以調用靜態的屬性或靜態的方法,而非靜態的卻可以調用靜態的屬性或方法
4.靜態的方法類不能有super或this
註:靜態的結構的生命周期要早於非靜態的結構,回收也晚
單例的設計模式(惡漢式)
1.解決的問題:使得一個類只能創建一個對象
2.如何實現:
1.私有化構造器,使得類的外部不能調用此構造器
2.在類的內部創建一個類的實例
3. 私有化此對象,提供公共的方法來調用
4.此公共的方法只能通過類來調,所以
聲明為static, 所以類的實例的聲明必須為static聲明
關於屬性賦值的操作:1.默認的初始化2.顯示的初始化或代碼塊的初始化(此兩個結構按照順序進行)3.構造器4.通過方法對對象的相應屬性修改
初始化塊(代碼塊):代碼塊如果有修飾的話,只能用static
2.分類:使用static修飾的叫靜態代碼,不使用的叫非靜態代碼
非靜態代碼塊:1.裏面可以進行屬性的初始化操作
2.裏面可以有輸出語句
3.一個類中可以有多個非靜態代碼塊,多個代碼塊結構之間按照順序結構執行
4.每創建一個對象,代碼塊加載一次
5.非靜態代碼塊的執行要早於構造器
靜態代碼塊:1.裏面可以有輸出語句
2.隨著類的加載而加載,而且只加載一次
3.多個代碼塊之間進行順序執行
4.靜態代碼塊早於非靜態
5.靜態的代碼塊只能進行靜態操作(類屬性,類方法)
final:最終的可以用來修飾類,屬性,方法
1.final修飾類,name這個類就不能被繼承。如:String,StringBffer,System
2.final修飾方法,不能被重寫,如Object類的getclass
3.final修飾屬性:此屬性就是一個,常量。習慣上用大寫字母表示。此常量不能使用默認初始化,可以顯示化賦值
如果一個變量用static final修飾:全局常量
abstract修飾類,抽象類
1.不可被實例化
2.抽象類有構造器(凡是類都有構造器)
3.抽象方法所在的類一定是抽象類
4.抽象類中可以沒有抽象方法

abstract修飾方法,抽象方法
1.格式:沒有方法體,包括{},如public abstract void eat();
2.抽象方法只保留方法的功能,而具體的而執行,交給繼承抽象類的子類,由子類重寫此抽象方法
3.若子類繼承抽象類,並重寫所有的抽象方法,則此類可以實例化
4.若子類繼承抽象類,沒有重寫所有的抽象方法,則此類必須聲明為抽象類
abstract不能用來修飾屬性,構造器,不能與private,final,static共用
接口(interface是與類並行的一個概念)
1.接口可以看做是一個特殊的抽象類。是常量與抽象方法的一個集合
2.接口是沒有構造器的
3.接口定義的就是一個功能。此功能可以被類實現,比如:class CC implements AA
4.實現接口的類必須要重寫其中所有的抽象方法,方可實例化,若沒有重寫所有的抽象方法,則此類扔為一個抽象類
5.類可以實現多個接口
6.接口與接口之間也是繼承關系,而且可以進行多繼承
常量
1.所有的常量全部用public static final修飾
抽象方法
所有的抽象方法都用public abstuct修飾
接口與具體的實現類之間也存在多態性

這是第三波java筆記