abstract类_012、Java的抽象方法、接口和String类
1. 抽象方法和抽象類
·抽象方法
使用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后,接口中包含普通的靜態方法。
接口的多繼承使用
接口完全支持多繼承。和類的繼承類似,子接口擴展某個父接口,將會獲得父接口中所定義的一切。
public3.內部類
一般情況,我們把類定義成獨立的單元。有些情況下,我們把一個類放在另一個類的內部定義,稱為內部類(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 Pool)、class文件常量池(Class Constant Pool)、運行時常量池(Runtime Constant Pool)
String5. 字符串相等的判斷
1. equals方法用來檢測兩個字符串內容是否相等。如果字符串s和t內容相等,則s.equals(t)返回true,否則返回false。
2. 要測試兩個字符串除了大小寫區別外是否是相等的,需要使用equalsIgnoreCase方法。
3. 判斷字符串是否相等不要使用"=="。
字符串的比較"=="與equals()方法
內存分析圖
總結
以上是生活随笔為你收集整理的abstract类_012、Java的抽象方法、接口和String类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 准备煮火锅的萝卜干需要加辣椒面吗?
- 下一篇: 大龙虾的家常做法?