使用abstract修飾的方法,沒有方法體,隻有聲明。定義的是一種“規範”,就是告訴子類必須要給抽象方法提供具體的實作。
·抽象類包含抽象方法的類就是抽象類。通過abstract方法定義規範,然後要求子類必須定義具體實作。通過抽象類,我們就可以做到嚴格限制子類的設計,使子類之間更加通用。
抽象類和抽象方法的基本用法
1. 有抽象方法的類隻能定義成抽象類
2. 抽象類不能執行個體化,即不能用new來執行個體化抽象類。
3. 抽象類可以包含屬性、方法、構造方法。但是構造方法不能用來new執行個體,隻能用來被子類調用。
4. 抽象類隻能用來被繼承。
5. 抽象方法必須被子類實作。
2.接口的詳解 接口的本質接口本質就是一種契約(規範),它被抽象類更加抽象,接口中所有的方法都是抽象方法(沒有方法體,所有的變量都是常量)。
接口的定義 public interface 接口名稱 extends 父接口1,父接口2...{ //成員變量(常量)--->預設使用public static final修飾的 //方法(抽象方法)--->預設使用public abstract修飾的 } 接口和抽象類的差別1.抽象類可以包含普通方法,構造方法和非常量的成員變量,而接口中所有的方法都是抽象方法,不能有構造方法,其成員變量為常量。
2.接口中方法預設使用public abstract修飾,成員變量預設使用public static final修飾
3.抽象類不能多繼承,而接口可以
1. 通路修飾符:隻能是public或預設。
2. 接口名:和類名采用相同命名機制。
3. extends:接口可以多繼承。
4. 常量:接口中的屬性隻能是常量,總是:public static final 修飾。不寫也是。
5. 方法:接口中的方法隻能是:public abstract。 省略的話,也是public abstract。
要點1. 子類通過implements來實作接口中的規範。
2. 接口不能建立執行個體,但是可用于聲明引用變量類型。
3. 一個類實作了接口,必須實作接口中所有的方法,并且這些方法隻能是public的。
4. JDK1.7之前,接口中隻能包含靜态常量、抽象方法,不能有普通屬性、構造方法、普通方法。
5. JDK1.8後,接口中包含普通的靜态方法。
接口的多繼承使用接口完全支援多繼承。和類的繼承類似,子接口擴充某個父接口,将會獲得父接口中所定義的一切。
public
一般情況,我們把類定義成獨立的單元。有些情況下,我們把一個類放在另一個類的内部定義,稱為内部類(innerclasses)。
内部類可以使用public、default、protected 、private以及static修飾。而外部頂級類(我們以前接觸的類)隻能使用public和default修飾。
内部類可以通路外部類的成員變量,但外部類不能通路内部的成員變量。
内部類的分類:Java中内部類主要分為成員内部類(非靜态内部類、靜态内部類)、匿名内部類、局部内部類。
成員内部類(可以使用private、default、protected、public任意進行修飾。 類檔案:外部類$内部類.class) 内部類介紹 非靜态内部類1. 内部類裡方法的局部變量:變量名。
2. 内部類屬性:this.變量名。
3. 外部類屬性:外部類名.this.變量名。
靜态内部類靜态内部類的執行個體方法不能直接通路外部類的執行個體方法。靜态内部類看做外部類的一個靜态成員。通過 new 靜态内部類()通路靜态内部類的執行個體。
new
1. 匿名内部類沒有通路修飾符。
2. 匿名内部類沒有構造方法。因為它連名字都沒有那又何來構造方法呢。
局部内部類内部類隻是一個編譯時概念,一旦我們編譯成功,就會成為完全不同的兩個類。對于一個名為Outer的外部類和其内部定義的名為Inner的内部類。編譯完成後會出現Outer.class和Outer$Inner.class兩個類的位元組碼檔案。是以内部類是相對獨立的一種存在,其成員變量/方法名可以和外部類的相同。
内部類的作用:1. 内部類提供了更好的封裝。隻能讓外部類直接通路,不允許同一個包中的其他類直接通路。
2. 内部類可以直接通路外部類的私有屬性,内部類被當成其外部類的成員。 但外部類不能通路内部類的内部屬性。
3. 接口隻是解決了多重繼承的部分問題,而内部類使得多重繼承的解決方案變得更加完整。
4.String類和常量池1. String類又稱作不可變字元序列。
2. String位于java.lang包中,Java程式預設導入java.lang包下的所有類。
String類的常用方法String
5. 字元串相等的判斷 1. equals方法用來檢測兩個字元串内容是否相等。如果字元串s和t内容相等,則s.equals(t)傳回true,否則傳回false。
2. 要測試兩個字元串除了大小寫差別外是否是相等的,需要使用equalsIgnoreCase方法。
3. 判斷字元串是否相等不要使用"=="。
字元串的比較"=="與equals()方法