《Java 核心技术卷1 第10版》学习笔记------ 接口(Interface)
接口技術(shù)作用:主要描述類具有什么功能,而并不給出每個(gè)功能的是的實(shí)現(xiàn)。
Java的繼承(inheritance)是不支持的多繼承的,但是Java接口是支持多繼承的。
一個(gè) Java 類實(shí)現(xiàn)一個(gè)接口類就必須實(shí)現(xiàn)接口類中的每一個(gè)方法。
接口中的所有方法自動(dòng)地屬于 public 。
在接口中還可以定義常量,但是不能有實(shí)例域。
在JDK1.8之前,也不能在接口中實(shí)現(xiàn)方法。1.8+版本可以實(shí)現(xiàn)一些簡(jiǎn)單的方法(靜態(tài)方法、默認(rèn)方法),不過(guò)這些方法不能引用實(shí)例域---(接口沒(méi)有實(shí)例域)
提供實(shí)例域和方法的任務(wù)應(yīng)該由實(shí)現(xiàn)接口的那個(gè)類來(lái)完成。
接口中的靜態(tài)方法:
在 Java SE 8 中, 允許在接口中增加靜態(tài)方法 。理論上講 , 沒(méi)有任何理由認(rèn)為這是不合法的 。 只是這有違于將接口作為抽象規(guī)范的初衷 。
通常的做法都是將靜態(tài)方法放在伴隨類中 。 在標(biāo)準(zhǔn)庫(kù)中 , 你會(huì)看到成對(duì)出現(xiàn)的接口 和實(shí)用工具類 , 如 Collection/ Collections 或 Path/ Paths 。
接口中的默認(rèn)方法:
可以為接口方法提供一個(gè)默認(rèn)實(shí)現(xiàn) 。 必須用 default 修飾符標(biāo)記這樣一個(gè)方法 。
?
解決接口默認(rèn)方法的沖突
如果先在一個(gè)接口中將一個(gè)方法定義為默認(rèn)方法 然后又在超類或另一個(gè)接口中定義了,同樣的方法, 會(huì)發(fā)生什么情況 ?
Java 的相應(yīng)規(guī)則要簡(jiǎn)單得多 。 規(guī)則如下 :
1 ) 超類優(yōu)先 。
如果超類提供了一個(gè)具體方法 , 同名而且有相同參數(shù)類型的默認(rèn)方法會(huì)被忽略 。
2 ) 接口沖突 。
如果一個(gè)超接口提供了一個(gè)默認(rèn)方法 另一個(gè)接口提供了一個(gè)同名而且,參數(shù)類型 ( 不論是否是默認(rèn)參數(shù) ) 相同的方法, 必須覆蓋這個(gè)方法來(lái)解決沖突 。
?
6.2.2 Comparator 接口
比較器接口,用于增加自定義的比較規(guī)則。
現(xiàn)在假設(shè)我們希望按長(zhǎng)度遞增的順序?qū)ψ址M(jìn)行排序, 而不是按字典順序進(jìn)行排序 。肯定不能讓 String 類用兩種不同的方式實(shí)現(xiàn) compareTo 方法,更何況, String 類也不應(yīng)由我們來(lái)修改 。
要處理這種情況 , ArrayS .Sort 方法還有第二個(gè)版本, 有一個(gè)數(shù)組和一個(gè)比較器 ( comparator )作為參數(shù), 比較器是實(shí)現(xiàn)了 Comparator 接口的類的實(shí)例 。
public interface Comparator<T> {int compare(T first, T second ) ; }要按長(zhǎng)度比較字符串, 可以如下定義一個(gè)實(shí)現(xiàn) Comparator<String > 的類 :
class LengthComparator implements Comparator<String> {public int compare(String first, String second ) {return first.lengthO - lengthO ;} }具體完成比較時(shí),需要建立一個(gè)實(shí)例:
Comparator<String> comp = new LengthComparator(); if(comp.compare(words[i], words[j]) > 0);// 使用 Arrays.sort方法 String [] friends = { "Peter " , " Paul ", "Mary" } ; Arrays,sort (friends, new LengthComparatorO ) :lambda 表達(dá)式、函數(shù)式接口、方法引用、內(nèi)部類、代理暫略。【后續(xù)單獨(dú)補(bǔ)上】
?
總結(jié)
以上是生活随笔為你收集整理的《Java 核心技术卷1 第10版》学习笔记------ 接口(Interface)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《Java 核心技术卷1 第10版》学习
- 下一篇: 《Java 核心技术卷1 第10版》学习