Java?接口定義變量的示例代碼
在 Java 中,接口是一種抽象類型,用于定義類必須實現(xiàn)的方法。接口可以包含常量和方法,但不能包含實例變量。接口中的變量必須是 public static final 的,這意味著它們是公共的、靜態(tài)的和最終的。
示例代碼
以下是一個簡單的示例,展示了如何在接口中定義變量:
public interface MyInterface {
// 定義常量
int CONSTANT = 100; // 等價于 public static final int CONSTANT = 100;
// 抽象方法
void myMethod();
}在這個示例中,CONSTANT 是一個常量,等價于 public static final int CONSTANT = 100。接口中的所有變量都會自動添加 public static final 修飾符。
訪問接口中的變量
在實現(xiàn)接口的類中,可以直接訪問接口中的常量:
public class MyClass implements MyInterface {
@Override
public void myMethod() {
System.out.println("Constant value: " + CONSTANT);
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.myMethod(); // 輸出: Constant value: 100
}
}在這個示例中,MyClass 實現(xiàn)了 MyInterface,并在 myMethod 方法中訪問了接口中的常量 CONSTANT。
注意事項
- 接口中的變量是常量:接口中的變量必須是 public static final 的,因此它們的值在定義后不能改變。
- 接口中的方法:接口中的方法默認(rèn)是 public abstract 的,必須由實現(xiàn)類來實現(xiàn)。Java 8 之后,接口中可以包含 default 方法和 static 方法。
- 接口不能實例化:接口不能直接實例化,必須通過實現(xiàn)類來實現(xiàn)接口中的方法。
通過以上示例和注意事項,可以更好地理解如何在 Java 接口中定義和使用變量。接口中的變量是常量,必須是 public static final 的,這使得接口在定義常量時非常有用。
補充:Java中接口里定義的成員變量
在interface里面的變量都是public static final 的。所以你可以這樣寫:
public static final int i=10;
或則
int i=10;(可以省略掉一部分)
注意在聲明的時候要給變量賦予初值
解釋:
首先你要弄清接口的含義.接口就是提供一種統(tǒng)一的’協(xié)議’,而接口中的屬性也屬于’協(xié)議’中的成員.它們是公共的,靜態(tài)的,最終的常量.相當(dāng)于全局常量.
抽象類是不’完全’的類,相當(dāng)于是接口和具體類的一個中間層.即滿足接口的抽象,也滿足具體的實現(xiàn).
如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關(guān)系,可以通過實現(xiàn)接口的對象的行為來修改接口中的屬性。這當(dāng)然沒有問題,但是考慮這樣的情況。如果接口A中有一個public訪問權(quán)限的靜態(tài)變量a。按照java的語義,我們可以不通過實現(xiàn)接口的對象來訪問變量a,通過A.a = xxx;就可以改變接口中的變量a的值了。正如抽象類中是可以這樣做的,那么實現(xiàn)接口A的所有對象也都會自動擁有這一改變后的a的值了,也就是說一個地方改變了a,所有這些對象中a的值也都跟著變了。這和抽象類有什么區(qū)別呢,怎么體現(xiàn)接口更高的抽象級別呢,怎么體現(xiàn)接口提供的統(tǒng)一的協(xié)議呢,那還要接口這種抽象來做什么呢?所以接口中不能出現(xiàn)變量,如果有變量,就和接口提供的統(tǒng)一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實現(xiàn)接口的對象提供一個統(tǒng)一的屬性。
通俗的講,你認(rèn)為是要變化的東西,就放在你自己的實現(xiàn)中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關(guān)閉,對擴展(不同的實現(xiàn)implements)開放,接口是對開閉原則的一種體現(xiàn)。
到此這篇關(guān)于Java 接口定義變量的示例代碼的文章就介紹到這了,更多相關(guān)Java 接口定義變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成簡單demo
本篇文章主要介紹了struts2.2.3+spring3.1.0 + mybatis3.1.0框架整合,結(jié)合在一起實現(xiàn)用戶的增刪改查功能,有需要的可以了解一下。2016-11-11
在Linux系統(tǒng)上升級Java版本的兩種方法步驟
由于項目升級,需要將JDK7升級到JDK8,升級JDK的同時也要升級一些其他的版本,下面這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)上升級Java版本的兩種方法步驟,需要的朋友可以參考下2024-09-09
SpringBoot導(dǎo)出Excel的四種實現(xiàn)方式
近期接到了一個小需求,要將系統(tǒng)中的數(shù)據(jù)導(dǎo)出為Excel,且能將Excel數(shù)據(jù)導(dǎo)入到系統(tǒng),對于大多數(shù)研發(fā)人員來說,這算是一個最基本的操作了,本文就給大家總結(jié)一下SpringBoot導(dǎo)出Excel的四種實現(xiàn)方式,需要的朋友可以參考下2024-01-01
springMvc異步的DeferredResult long?polling應(yīng)用示例解析
這篇文章主要為大家介紹了springMvc中DeferredResult的long?polling應(yīng)用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法
這篇文章主要介紹了SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10

