Java面向對象思想

三大特性:繼承,封裝,多態java

繼承在Java中不支持多繼承,因此通常大多狀況下使用接口

關鍵字extendthis

class 父類 { }
class 子類 extends 父類 { }

重寫: 子類能夠根據須要,定義特定於本身的行爲。 也就是說子類可以根據須要實現父類的方法。spa

重載: 在一個類裏面,方法名字相同,而參數不一樣。返回類型能夠相同也能夠不一樣。 通常用於構造器的重載指針

 

多態:水果包括蘋果,梨,香蕉及其餘類型

 

封裝:外部只能訪問屬性,不能修改屬性

public int getAge(){ return age; } ​ 對象

​public void setAge(int age){ this.age = age; } ​繼承

 

抽象類,抽象方法:關鍵字 abstract

  • 1. 抽象類不能被實例化(初學者很容易犯的錯),若是被實例化,就會報錯,編譯沒法經過。只有抽象類的非抽象子類能夠建立對象。接口

  • 2. 抽象類中不必定包含抽象方法,可是有抽象方法的類一定是抽象類。get

  • 3. 抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現也就是方法的具體功能。編譯

  • 4. 構造方法,類方法(用 static 修飾的方法)不能聲明爲抽象方法。class

  • 5. 抽象類的子類必須給出抽象類中的抽象方法的具體實現,除非該子類也是抽象類。

在Java中抽象類表示的是一種繼承關係,一個類只能繼承一個抽象類,而一個類卻能夠實現多個接口。

抽象類中的方法默認爲抽象方法

 

接口

一般以interface來聲明。一個類經過繼承接口的方式,從而來繼承接口的抽象方法。

接口並非類,編寫接口的方式和類很類似,可是它們屬於不一樣的概念。接口則包含類要實現的方法。

接口沒法被實例化,可是能夠被實現。一個實現接口的類,必須實現接口內所描述的全部方法,不然就必須聲明爲抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們能夠成爲一個空指針,或是被綁定在一個以此接口實現的對象(??)。

接口與類類似點:

  • 一個接口能夠有多個方法。
  • 接口文件保存在 .java 結尾的文件中,文件名使用接口名。
  • 接口的字節碼文件保存在 .class 結尾的文件中。
  • 接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。

接口與類的區別:

  • 接口不能用於實例化對象。
  • 接口沒有構造方法。
  • 接口中全部的方法必須是抽象方法。
  • 接口不能包含成員變量,除了 static 和 final 變量(全局變量)。
  • 接口不是被類繼承了,而是要被類實現。
  • 接口支持多繼承

接口特性

  • 接口中每個方法也是隱式抽象的,接口中的方法會被隱式的指定public abstract(只能是 public abstract,其餘修飾符都會報錯)。
  • 接口中能夠含有變量,可是接口中的變量會被隱式的指定爲 public static final 變量(而且只能是 public,用 private 修飾會報編譯錯誤)。
  • 接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

抽象類和接口的區別

  • 1. 抽象類中的方法能夠有方法體,就是能實現方法的具體功能,可是接口中的方法不行。
  • 2. 抽象類中的成員變量能夠是各類類型的,而接口中的成員變量只能是 public static final 類型的。
  • 3. 接口中不能含有靜態代碼塊以及靜態方法(用 static 修飾的方法),而抽象類是能夠有靜態代碼塊和靜態方法。
  • 4. 一個類只能繼承一個抽象類,而一個類卻能夠實現多個接口。
相關文章
相關標籤/搜索