java的接口怎么理解_如何理解Java 中的接口
一、接口(Interface)
在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
1、接口的聲明
1.1?接口的聲明語法格式如下:[可見度] interface 接口名稱 [extends 其他的接口名] {
// 聲明變量
// 抽象方法
}
1.2 Interface關鍵字用來聲明一個接口。下面是接口聲明的一個簡單例子。/* 文件名 : DemoInterface.java */
import java.lang.*; //引入包
public interface DemoInterface {
//任何類型 final, static 字段
//抽象方法}
1.3 接口有以下特性:
a、接口是隱式抽象的,當聲明一個接口的時候,不必使用abstract關鍵字。
b、接口中每一個方法也是隱式抽象的,聲明時同樣不需要abstract關鍵字。
c、接口中的方法都是公有的。
2、接口的實現
當類實現接口的時候,類要實現接口中所有的方法。否則,類必須聲明為抽象的類。類使用implements關鍵字實現接口。在類聲明中,Implements關鍵字放在class聲明后面。
2.1?接口的實現語法格式如下:...implements 接口名稱[, 其他接口名稱, 其他接口名稱..., ...] ...
實例如下:Animal.java 文件代碼:/* 文件名 : Dog.java */
public class Dog implements Animal{
public void eat(){
System.out.println("Dog eats");}
public static void main(String args[]){
Dog d = new Dog ();
d.eat();}}
2.2 重寫接口中聲明的方法時,需要注意以下規則:
類在實現接口的方法時,不能拋出強制性異常,只能在接口中,或者繼承接口的抽象類中拋出該強制性異常。
類在重寫方法時要保持一致的方法名,并且應該保持相同或者相兼容的返回值類型。
如果實現接口的類是抽象類,那么就沒必要實現該接口的方法。
2.3 在實現接口的時候,也要注意一些規則:
一個類可以同時實現多個接口。
一個類只能繼承一個類,但是能實現多個接口。
一個接口能繼承另一個接口,這和類之間的繼承比較相似。
3、接口的繼承
一個接口能繼承另一個接口,和類之間的繼承方式比較相似。接口的繼承使用extends關鍵字,子接口繼承父接口的方法。// 文件名: Grandfather.java
public interface Grandfather
{public void setSaveMoney(double money);}
// 文件名: Father.java
public interface Father extends Grandfather
{public void setSaveHouse (int num);}
// 文件名: Son.java
public interface Son extends Father
{public void setSaveCulture ();}
Son接口自己聲明了一個方法,從Father接口繼承了兩個方法,這樣,實現Son接口的類需要實現三個方法。
4、接口的多繼承
在Java中,類的多繼承是不合法,但接口允許多繼承。public interface Son extends Father,Grandfather
5、接口特點
1.接口可以多繼承
2.接口的方法聲明必須是 public abstract 即便不寫默認也是
3.接口里面不能包含方法具體實現,只聲明
4.類繼承接口必須實現接口里申明的全部方法,除非該類是抽象類
5.類里面可以聲明 public static final 修飾的變量
6.接口不能被實例化,但是可以被實現類創建
6、什么時候使用抽象類和接口
1、 如果你擁有一些方法并且想讓它們中的一些有默認實現,那么使用抽象類吧。
2、 如果你想實現多重繼承,那么你必須使用接口。由于Java不支持多繼承,子類不能夠繼承多個類,但可以實現多個接口。因此你就可以使用接口來解決它。
3、如果基本功能在不斷改變,那么就需要使用抽象類。如果不斷改變基本功能并且使用接口,那么就需要改變所有實現了該接口的類。
4、在 JDK1.8,允許我們給接口添加兩種非抽象的方法實現:
1)、默認方法,添加 default 修飾即可;
2)、靜態方法,使用 static 修飾;示例如下:interface Test{
//這個是默認方法
default String get(String aa){
System.out.println("我是jdk1.8默認實現方法...");
return "";}
//這個是靜態方法
static void staticmethod(){
System.out.println("我是靜態方法");}}
調用得話,靜態方法只能通過接口名調用,不可以通過實現類的類名或者實現類的對象調用,default 方法只能通過接口實現類的對象來調用。
7、接口的含義理解
接口可以理解成統一的協議, 而接口中的屬性也屬于協議中的內容。但是接口的屬性都是公共的,靜態的,最終的。
接口的成員特點:
1、成員變量只能是常量,默認修飾符 public static final
2、成員方法只能是抽象方法。默認修飾符 public abstract所以,Java 接口中,使用變量的時候,變量必須被賦值。//所以接口定義屬性
public interface People {
int age=10;
String name="輸出名字"; // 接口里面定義的成員變量都是 public static final 修飾
public void eat(); }
所有的變量必須給出初始值,且絕對不會被修改,因為隱藏的修飾符為 public static final。
8、Java 抽象類和接口總結
1、abstract class 在 Java 語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是,一個類卻可以實現多個 interface。
2、在 abstract class 中可以有自己的數據成員,也可以有非 abstarct 的成員方法,而在 interface 中,只能夠有靜態的不能被修改的數據成員(也就是必須是 static final 的,不過在 interface 中一般不定義數據成員),所有的成員方法都是 abstract 的。
3、abstract class 和 interface 所反映出的設計理念不同。其實 abstract class 表示的是 "is-a" 關系,interface 表示的是 "has-a" 關系。
4、實現抽象類和接口的類必須實現其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實現方法。
5、接口中定義的變量默認是 public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。
6、抽象類中的變量默認是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7、接口中的方法默認都是 public,abstract 類型的。
總結
以上是生活随笔為你收集整理的java的接口怎么理解_如何理解Java 中的接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 静态方法中为什么不可以使用关键
- 下一篇: java 流 复制文件_【Java】使用