接口总结
1.接口定義:
①Java接口是一系列方法的聲明,是一些抽象的集合。
②一個(gè)接口只有抽象方法沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。
③簡(jiǎn)單地說(shuō),接口就是特殊的抽象類,即所有方法都是抽象方法的抽象類就是Java中的接口(interface)。
2.接口的基本格式:
[修飾符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
①修飾符:可選,用于指定接口的訪問(wèn)權(quán)限,可選值為public。即使省略,也依然是public。
②接口名:必選參數(shù),用于指定接口的名稱,接口名必須是合法的Java標(biāo)識(shí)符。一般情況下,要求首字母大寫。
③extends 父接口名列表:可選參數(shù),用于指定要定義的接口繼承于哪個(gè)父接口。當(dāng)使用extends關(guān)鍵字時(shí),父接口名為必選參數(shù)。父接口可以存在多個(gè),用逗號(hào)隔開。
④方法:接口中的方法只有定義而沒(méi)有被實(shí)現(xiàn)。
3.接口的特點(diǎn):
①接口是一種特殊的抽象類。
②接口中沒(méi)有變量,只能有public static final修飾的靜態(tài)常量。三個(gè)修飾符可以省略。
③接口中所有方法都是抽象方法,且默認(rèn)就是public權(quán)限。 ???比較的是內(nèi)存中的虛地址。
???public interface Flyer {
public static final int TYPE=1;
public abstract void fly();
public abstract void land();
public abstract void takeoff();
}
4.類實(shí)現(xiàn)接口的特點(diǎn):
①類實(shí)現(xiàn)接口,本質(zhì)上與類繼承類相似,區(qū)別在于“類最多只能繼承一個(gè)類,即單繼承,而一個(gè)類卻可以同時(shí)實(shí)現(xiàn)多個(gè)接口”,多個(gè)接口用逗號(hào)隔開即可。實(shí)現(xiàn)類需要覆蓋所有接口中的所有抽象方法,否則該類也必須聲明為抽象類。
②接口是抽象的,接口中沒(méi)有任何具體方法和變量,所以接口不能進(jìn)行實(shí)例化。接口定義的是多個(gè)類都要實(shí)現(xiàn)的操作,即“what to do”。類可以實(shí)現(xiàn)接口,從而覆蓋接口中的方法,實(shí)現(xiàn)“how to do”。
5.實(shí)現(xiàn)接口的基本格式:
[修飾符] class <類名> [extends 父類名] [implements 接口列表]{
}
①修飾符:可選參數(shù),用于指定類的訪問(wèn)權(quán)限,可選值為public、abstract和final。
②類名:必選參數(shù),用于指定類的名稱,類名必須是合法的Java標(biāo)識(shí)符。一般情況下,要求首字母大寫。
③extends 父類名:可選參數(shù),用于指定要定義的類繼承于哪個(gè)父類。當(dāng)使用extends關(guān)鍵字時(shí),父類名為必選參數(shù)。
④implements 接口列表:可選參數(shù),用于指定該類實(shí)現(xiàn)的是哪些接口。當(dāng)使用implements關(guān)鍵字時(shí),接口列表為必選參數(shù)。當(dāng)接口列表中存在多個(gè)接口名時(shí),各個(gè)接口名之間使用逗號(hào)分隔。
6.接口繼承接口:
①Java接口繼承接口的原則:Java接口可以繼承多個(gè)接口;接口繼承接口依然使用關(guān)鍵字extends,不要錯(cuò)用成implements。
②Java接口繼承接口的形式:
Interface3 extends Interface0, Interface1, interface……
7.接口繼承與類繼承:
①接口繼承與類繼承對(duì)比:Java類的繼承是單一繼承,Java接口的繼承是多重繼承。
②接口可實(shí)現(xiàn)多繼承原因分析:
不允許類多重繼承的主要原因是,如果A同時(shí)繼承B和C,而B和C同時(shí)有一個(gè)D方法,A無(wú)法確定該繼承那一個(gè)。
接口全都是抽象方法繼承誰(shuí)都可以,所以接口可繼承多個(gè)接口
8.接口與抽象類區(qū)別:
①對(duì)比圖表:
| ? | Abstract class | interface |
| 屬性 | 不用限制 | 靜態(tài)常量 |
| 構(gòu)造方法 | 可有可無(wú) | 沒(méi)有 |
| 普通方法 | 可以有具體方法 | 必須是抽象方法 |
| 子類 | 單一繼承 | 多重實(shí)現(xiàn) |
?
②區(qū)別總結(jié):
abstract class 在 Java 語(yǔ)言中表示的是一種繼承關(guān)系,一個(gè)類只能使用一次繼承關(guān)系。但是,一個(gè)類卻可以實(shí)現(xiàn)多個(gè)interface.
在abstract class 中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是 static final的,不過(guò)在 interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。
實(shí)現(xiàn)抽象類和接口的類必須實(shí)現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實(shí)現(xiàn)方法。
接口中定義的變量默認(rèn)是public static final 型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值。
接口中的方法默認(rèn)都是 public,abstract 類型的。
9.接口的作用:
接口是設(shè)計(jì)層面的概念,往往由設(shè)計(jì)師設(shè)計(jì),將定義與實(shí)現(xiàn)分離。
10.面向接口編程:
①面向接口編程和面向?qū)ο缶幊滩⒉皇瞧郊?jí)的,它并不是比面向?qū)ο缶幊谈冗M(jìn)的一種獨(dú)立的編程思想,而是附屬于面向?qū)ο笏枷塍w系,屬于其一部分。它是面向?qū)ο缶幊腆w系中的思想精髓之一。
②面向接口編程的意思是指在面向?qū)ο蟮南到y(tǒng)中所有的類或者模塊之間的交互是由接口完成的。
11.Comparable接口:
①Comparable接口中定義了比較方法,compareTo,返回值為int。
②當(dāng)int值為正數(shù),表示大于;為負(fù)數(shù),表示小于;為0,表示等于。
轉(zhuǎn)載于:https://www.cnblogs.com/y-zz/p/7593501.html
總結(jié)
- 上一篇: Theano 更多示例
- 下一篇: 华硕笔记本电脑突然失去WIFI功能