面向過程&面向對象
-
面向過程思想
步驟清晰簡單,第一步作什么,第二步作什么。。
面對過程是何處理一些較為簡單的問題
-
面向對象思想
-
-
面向對象適合處理復雜的問題,適合處理需要多人協作的問題!
-
對於描述復雜的事務,為了從宏觀上把握、從整體上合理分析,我們需要使用面向對象的思路來分析整個系統。但是,具體到微觀操作,仍然需要面向過程的思路去處理。
什么事面向對象
面向對象編程(Object-Oriented Programming.OOP)
面向對象編程的本質就是:以類的方式組織代碼,以對象的形式組織(封裝)數據。
類與對象的關系
類是一種抽象的數據類型,它是對某一類事物整體描述、定義,但是並不能代表某一個具體的事務
創建與初始化對象
使用new關鍵字創建對象
使用new關鍵字創建的時候,除了分配內存空間之外,還會給創建好的對象進行默認的初始化以及對類中構造器的調用。
類中的構造器也陳偉構造方法,是在進行創建對象的時候必須要調用的。並且構造器有以下兩個特點:
-
必須和類的名字相同
-
必須沒有返回類型,也不能些void
構造器
-
和類名相同
-
沒有返回值
-
作用:
-
new 本質在調用構造方法
-
初始化對象的值
注意點:
-
定義有參構造之后,如果想使用無參構造,要顯示定義一個無參的構造
快捷鍵alt+Insert 加構造器快捷鍵
類與對象總結
-
類與對象
類是一個模板:抽象的;對象是一個具體的實例
2.方法
定義、調用!
3.對應的應用
引用型:基本類型(8)
對象是通過引用來操作的:棧----》堆
4.屬性:字段Field成員變量
默認初始化:
數字: 0 0.0
char:u0000
boolean:false
引用 null
修飾符 屬性類型 屬性名=屬性值!
5.對象的創建和使用
-
必須使用new 關鍵字創造對象,構造器Person p=new Person();
-
對象的屬性p.name
-
對象的方法p.sleep();
6.類:
靜態的屬性 屬性
動態的行為 方法
封裝
程序設計要追求“高內聚,低耦合”
應禁止直接訪問一個對象中數據的實際表示,而應通過操作接口來訪問,稱為信息隱藏。
屬性私有,get/set
繼承
本質是對某一批類的抽象,從而實現對現實世界更好的建模。
extands意思是“擴展”。子類是父類的擴展。
java中類只有單繼承,沒有多繼承!
繼承是類和類之間的一種關系,除此之外,類和類之間的關系還有依賴,組合,聚合等
繼承關系的兩個類,一個為子類(派生類),一個為父類(基類)。子類繼承父類,使用關鍵字extends表示
子類和父類之間從意義上將應該具有“is a”的關系
super注意點:
-
super調用父類的構造方法,必須在構造方法的第一個
-
super只能出現在子類的方法或者構造方法中!
-
super和this不能同時調用構造方法!
vs this:
代表的對象不同:
this:本身調用者這個對象
super:代表父類對象的引用
前提
this:沒有繼承也可以使用
super:只能在繼承條件才可以使用
構造方法
this()本類的構造
super()父類的構造
方法重寫
重寫:需要有繼承關系,子類重寫父類的方法!
-
方法名必須相同
-
參數列表必須相同
-
修飾符:范圍可以擴大但不可以縮小:public>protected>Default>private
-
拋出的異常:范圍,可以被縮小,但不能擴大:ClassNotFoundException--->Exception(大)
重寫:子類的方法和父類必須要一致!方法體不同!
為什么需要重寫:
1.父類的功能,子類不一定需要,或者不一定滿足!
Alt+Insert: override
多態
即同一方法可以根據發送對象的不同而采用多種不同的行為方式
一個對象的實際類型是可以確定的,但可以指向對象的引用的類型有很多
多態存在的條件
-
有繼承關系
-
子類重寫父類方法
-
父類引用指向子類對象
注意:多態是方法的多態,屬性沒有多態性。
instanceof 引用類型類型轉換
父類和子類,有聯系 類型轉換異常!ClassCastException!
不能重寫方法:
1.static方法,屬於類,不屬於實例
2.final常量
3.private方法
抽象類
abstract修飾符可以用來修飾方法也可以修飾類,如果修飾方法,name該方法就是抽象方法,如果修飾類,該類就是抽象類。
抽象類中可以沒有抽象方法,但是有抽象方法的類一定要聲明為抽象類
抽象類,不能使用new關鍵字來創建對象,它是用來讓子類繼承
抽象方法,只有方法的聲明,沒有方法的實現,是用來讓子類實現的
子類繼承抽象類,那么久必須要實現抽象類沒有實現的抽象方法,否則該子類也要聲明為抽象類。
接口
普通類:只有具體實現
抽象類:具體實現和規范(抽象方法)都有!
接口:只有規范!自己無法寫方法~專業的約束!約束和實現分離:面向接口編程!!!
接口就是規范,接口的本質是契約!!
聲明類的關鍵字是class,聲明接口的關鍵字是interface
作用
-
接口是一個約束
-
定義一些方法,讓不同的人實現
-
方法只能創建抽象,創建 public sbstract
-
屬性只能創建常量,常量創建 public static final
-
接口不能被實例化,接口中沒有構造方法
-
implements 可以實現多個接口
-
必須要重寫接口中的方法
內部類
內部類就是在一個類的內部再定義一個類,如,A類中定義B類,B類就是A類的內部類;反之,A類是B類的外部類
-
成員內部類:在類的里面寫一個類
-
靜態內部類:在類的里面寫一個stiatic修飾的類
-
局部內部類:在類的方法里面寫一個類
-
匿名內部類:
異常機制
總結:
-
處理運行時異常時,采用邏輯去合理規避同時輔助try-catch處理
-
在多重catch塊后面,可以加一個catch(Exception)來處理可能會被遺漏的異常
-
對於不確定的代碼,也可以加上try-catch,處理潛在的異常
-
盡量去處理異常,切忌只是簡單地調用printStackTrace()去打印輸出
-
具體如何處理異常,要根據不同的業務需求和異常類型去決定
-
盡量添加finally語句塊去釋放占用的資源
String
string:字符串,使用一對""引起來表示。
-
String聲明為final的,不可被繼承
-
String實現了Serializable接口:表示字符串是支持序列化的。
-
實現了Comparable接口:表示String可以比較大小
-
String內部定義了final char[] value用於存儲字符串數據
-
String:代表不可變的字符序列。簡稱:不可變性。
-
-
-
