11-JAVA面向對象

JAVA面向對象

JAVA面向對象思維導圖

包:

JAVA中,使用包來管理類,就像在資源管理器中使用文件來管理文件一樣

在同一個包中,類名不能重名,在不同包中類名可以相同

將會涉及的包:

  • java.lang

    • java語言的基礎包,系統會自動導包
  • java.util

    • 工具包
  • java.io

    • 輸入輸出相關的類
  • java.text

    • 文本處理相關的類
  • java.net

    • 網絡相關的類
  • java.math

    • 數學相關的類

使用package關鍵字定義包,package定義包的語句必須作爲源文件的第一條語句

包的命名規範:

  • 公司的域名倒敘.項目包.模塊名.子模塊名

使用其他的類:

  • import #.#.*;

    • 把被使用的類導入當前文件中,再使用簡易類名調用
  • 需求:

    • 使用其他包中的類
  • 前提:

    • 被使用的類必須定義爲public修飾的公告類
  • 使用方式:

    • 1、使用import導入,再通過簡易類名訪問
    • 2、直接使用完整類名

類:

類訪問權限:

  • 類的訪問權限:

    • 公共類

      • 使用public修飾的類就是公共類
    • 非公共類

  • 公共的使用場景:

    • 如果這個類想在其他包中使用,需要定義爲公共類;如果這個類沒有使用public修飾,這個類只能在當前包中使用(即使導入也不可使用)

類成員的訪問權限:

訪問權限遵循最小化原則

想在任意位置訪問就定義爲public公共的

在當前類和派生類中可直接訪問定義爲protected受保護的

Object:

(java中所有類的根父類,java中的類要麼直接繼承object,要麼間接繼承object)

java中的類的繼承是可傳遞的,object類中定義的方法,所有的類都能繼承到

clone()

  • 對象克隆(很少使用)

equals()

  • 用於判斷兩個對象的內容是否一樣

    • 使用關係運算符==判斷兩個引用名稱是否相等,如果兩個變量相等,說明這兩個變量中的引用堆中的同一個對象
    • 如果想要判斷兩個對象中的內容(即各個成員變量的值)是否一樣,需要重寫equals()方法。根據哈希約定,如果兩個對象的equals()相等,那麼這兩個對象的hashCode()也應該相等,即在重寫equals()方法的同時,也要重寫hashCode()

finalize()

  • 當對象被垃圾回收時,會執行對象的finalize()方法,但是世界不確定,一般不用

getclass()

  • 返回對象的運行時類對象,簡單理解爲返回對象的類的字節碼文件

hashCode()

  • 返回對象的哈希碼

notifyAll()

notify()

  • 在線程中用於喚醒等待中的線程

toString()

  • 把對象轉化爲字符串

    • 打印對象println(#)時,會調用對象toString方法,當打印對象時,想顯示對象的各個屬性

wait()

  • 在多線程中,讓線程等待

JAVA Bean的一般寫法:

定義實體類:

  • 1、一般把所有字段私有化,提供公共的get/set方法,對字段進行訪問
  • 2、一般會提供無參構造
  • 3、一般需要重寫toString、equals/hashCode

接口的應用:

1、使用接口用來封裝功能操作

  • 如在FlyAble()接口中封裝了fly飛行功能,在SwimmAble()接口中封裝swimm游泳功能

2、接口可以定義一組操作規範:

  • 如開發某個新項目時,在相似模塊中有一些操作是相同的,可以把這一組相同的操作封裝在一個接口中,就相當於通過接口定義了一個操作規範

提倡面向接口編程:

  • 1、接口使用比較靈活,一個類在繼承父類的同時,可以實現多個接口

  • 2、接口比較容易擴展,接口引用可以賦值各種實現類對象,經常把接口作爲方法形參,在調用方法時,可以傳遞各種實現類對象

  • 3、接口可以使項目分層

接口與抽象類的異同點:

同:

  • 1、都可以定義爲抽象方法
  • 2、都不能實例化對象
  • 3、定義的抽象方法都需要被重寫
  • 4、都可以定義public static方法,public static final常量

異:

  • 1、意義不同

    • 抽象類是對事物更高層級的抽象
    • 接口是對功能方法的封裝
  • 2、定義方法不同

    • 抽象類用abstract定義
    • 接口使用interface定義
  • 3、內容不同

    • 抽象類中除了抽象方法外,還可以定義構造方法等普通類中定義的所有成員,接口除了抽象方法等這四個內容外,不能定義構造方法等內容(三方一常量)
  • 4、使用方式不同

    • 抽象類需要被子類繼承

      • extends
    • 接口需要被實現類實現

      • implements
  • 5、類支持單繼承,接口支持多繼承

  • 6、應用場景不同

    • 一般情況下,對類進行功能的擴展,優先選擇接口
    • 除了功能擴展外,還需要保存不同的數據,只能選擇抽象類;抽象類的抽象方法需要子類重寫,抽象類還可以約束所有子類都具有相同的功能

接口:

1、定義與接口:

  • 電腦上的接口有哪些?

    • USB接口、耳機接口……
  • java中的接口就是功能的封裝,用來擴展類的功能

  • 接口也可以理解爲一組操作規範,或者是一個協議

  • 如何定義接口:

    • 語法格式:

      • [修飾符] interface 接口名 {

      void fly(); //功能,用方法表示,接口中的方法默認使用public abstract修飾,沒有方法體

}

  • 如何使用接口?

    • 語法格式:

      • class 類名 implements 接口名{

      @Overwrite
      void fly(){

        #		//重寫接口中的抽象方法
      

      }

}

2、接口說明:

  • 1、接口中方法默認使用public abstract修飾,接口還可以定義爲public static final 常量,public方法,public default方法(如果使用default修飾,可以有默認的方法體,可重寫或不重寫)
  • 2、類實現了接口,需要重寫接口的抽象方法,如果沒有重寫接口中所有的抽象方法,實現類需要定義爲抽象類
  • 3、接口是一種引用數據類型,可以定義變量,但是接口不能實例化對象,接口引用需要賦值實現類對象,或者接口的匿名內部類對象
  • 4、接口多態,接口引用調用接口中抽象方法,實際上執行的是實現類對象的方法
  • 5、一個類可以同時實現多個接口,需要重寫所有接口的所有接口的所有抽象方法
  • 6、接口也支持繼承,接口支持多繼承

抽象類:

1、對一組對象進行更高層級抽象時,形成抽象類,就可以定義爲抽象類

2、含有抽象方法的類必須定義爲抽象類

  • 2.1、爲什麼定義抽象類?

    • 對事物進行進一步抽象可以形成抽象類
    • 含有抽象方法的類必須定義爲抽象類
  • 2.2如何定義抽象類?

    • 使用abstract修飾類
  • 2.3爲什麼定義抽象方法?

    • 當一個類的某個操作無法具體實現時,這個操作可以定義爲抽象方法
    • 使用abstract修飾方法,只有方法的聲明,沒有方法體
  • 2.4如何使用抽象類?

    • 抽象類一般作爲其他的父類存在

    • 子類繼承了抽象類,子類需要重寫抽象類中的所有抽象方法,如果子類沒有重寫所有的抽象方法,則子類也需要定義爲抽象類

    • 注意:

      • 抽象類中不一定含有抽象方法
  • 2.5抽象類不能實例化對象,需要賦值子類對象

    • 抽象父類 # = new 子類()
  • 2.6抽象類的引用可以直接匿名內部類對象

    • 子主題 1

final關鍵字:

可修飾:

    • 表示該類是最終類,不能被繼承
    • System、String、Scanne就是final修飾的類
  • 字段

    • 字段(Field),也叫做成員變量,包括實例變量與靜態變量兩大類
    • final修飾的字段必須顯示的賦值,經常在定義final字段的同時就賦值,也可在構造方法中賦值
    • final修飾的字段不可再重新賦值
    • 一般情況下與static都是同時使用的,final字段所有字母都是大寫,稱爲final常量
  • 方法

    • 最終方法,不能被子類重寫(覆蓋),能被子類繼承
  • 局部變量

    • 一律初始化就不要再修改,final修飾引用類型變量,是指這個引用類型變量不能再指向其他對象,可以修飾它的屬性
  • 形參

    • 在方法中不能修改final形參的值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章