狂神說Java個人筆記-面向對象


面向對象

面向過程&面向對象

  • 面向過程思想

步驟清晰簡單,第一步作什么,第二步作什么。。

面對過程是何處理一些較為簡單的問題

  • 面向對象思想

  1. 物以類聚,分類的思維模式,思考問題首先回解決問題需要哪些分類,然后對這些分類進行單獨思考。最后,才對某個分類下的細節進行面向過程的思索。

  2. 面向對象適合處理復雜的問題,適合處理需要多人協作的問題!

  3. 對於描述復雜的事務,為了從宏觀上把握、從整體上合理分析,我們需要使用面向對象的思路來分析整個系統。但是,具體到微觀操作,仍然需要面向過程的思路去處理。

    什么事面向對象

    面向對象編程(Object-Oriented Programming.OOP)

    面向對象編程的本質就是:以類的方式組織代碼,以對象的形式組織(封裝)數據。

    類與對象的關系

    類是一種抽象的數據類型,它是對某一類事物整體描述、定義,但是並不能代表某一個具體的事務

    創建與初始化對象

    使用new關鍵字創建對象

    使用new關鍵字創建的時候,除了分配內存空間之外,還會給創建好的對象進行默認的初始化以及對類中構造器的調用。

    類中的構造器也陳偉構造方法,是在進行創建對象的時候必須要調用的。並且構造器有以下兩個特點:

    1. 必須和類的名字相同

    2. 必須沒有返回類型,也不能些void

    構造器

    1. 和類名相同

    2. 沒有返回值

作用:

  1. new 本質在調用構造方法

  2. 初始化對象的值

注意點:

  1. 定義有參構造之后,如果想使用無參構造,要顯示定義一個無參的構造

快捷鍵alt+Insert 加構造器快捷鍵

類與對象總結

  1. 類與對象

    類是一個模板:抽象的;對象是一個具體的實例

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()父類的構造

方法重寫

重寫:需要有繼承關系,子類重寫父類的方法!

  1. 方法名必須相同

  2. 參數列表必須相同

  3. 修飾符:范圍可以擴大但不可以縮小:public>protected>Default>private

  4. 拋出的異常:范圍,可以被縮小,但不能擴大:ClassNotFoundException--->Exception(大)

    重寫:子類的方法和父類必須要一致!方法體不同!

為什么需要重寫:

1.父類的功能,子類不一定需要,或者不一定滿足!

Alt+Insert: override

多態

即同一方法可以根據發送對象的不同而采用多種不同的行為方式

一個對象的實際類型是可以確定的,但可以指向對象的引用的類型有很多

多態存在的條件

  1. 有繼承關系

  2. 子類重寫父類方法

  3. 父類引用指向子類對象

注意:多態是方法的多態,屬性沒有多態性。

instanceof 引用類型類型轉換

父類和子類,有聯系 類型轉換異常!ClassCastException!

不能重寫方法:

1.static方法,屬於類,不屬於實例

2.final常量

3.private方法

 

抽象類

abstract修飾符可以用來修飾方法也可以修飾類,如果修飾方法,name該方法就是抽象方法,如果修飾類,該類就是抽象類。

抽象類中可以沒有抽象方法,但是有抽象方法的類一定要聲明為抽象類

抽象類,不能使用new關鍵字來創建對象,它是用來讓子類繼承

抽象方法,只有方法的聲明,沒有方法的實現,是用來讓子類實現的

子類繼承抽象類,那么久必須要實現抽象類沒有實現的抽象方法,否則該子類也要聲明為抽象類。

接口

普通類:只有具體實現

抽象類:具體實現和規范(抽象方法)都有!

接口:只有規范!自己無法寫方法~專業的約束!約束和實現分離:面向接口編程!!!

接口就是規范,接口的本質是契約!!

聲明類的關鍵字是class,聲明接口的關鍵字是interface

作用

  1. 接口是一個約束

  2. 定義一些方法,讓不同的人實現

  3. 方法只能創建抽象,創建 public sbstract

  4. 屬性只能創建常量,常量創建 public static final

  5. 接口不能被實例化,接口中沒有構造方法

  6. implements 可以實現多個接口

  7. 必須要重寫接口中的方法

    內部類

    內部類就是在一個類的內部再定義一個類,如,A類中定義B類,B類就是A類的內部類;反之,A類是B類的外部類

  8. 成員內部類:在類的里面寫一個類

  9. 靜態內部類:在類的里面寫一個stiatic修飾的類

  10. 局部內部類:在類的方法里面寫一個類

  11. 匿名內部類:

    異常機制

    總結:

    1. 處理運行時異常時,采用邏輯去合理規避同時輔助try-catch處理

    2. 在多重catch塊后面,可以加一個catch(Exception)來處理可能會被遺漏的異常

    3. 對於不確定的代碼,也可以加上try-catch,處理潛在的異常

    4. 盡量去處理異常,切忌只是簡單地調用printStackTrace()去打印輸出

    5. 具體如何處理異常,要根據不同的業務需求和異常類型去決定

    6. 盡量添加finally語句塊去釋放占用的資源

      String

      string:字符串,使用一對""引起來表示。

      1. String聲明為final的,不可被繼承

      2. String實現了Serializable接口:表示字符串是支持序列化的。

      3. 實現了Comparable接口:表示String可以比較大小

      4. String內部定義了final char[] value用於存儲字符串數據

      5. String:代表不可變的字符序列。簡稱:不可變性。

      6.  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM