1. 程式人生 > >接口裡定義的成員變數必須是public static final型別

接口裡定義的成員變數必須是public static final型別

在interface裡面的變數都是public static final 的。所以你可以這樣寫:

  public static final int i=10;

  或則

  int i=10;(可以省略掉一部分)

  注意在宣告的時候要給變數賦予初值

  解釋:

  首先你要弄清介面的含義.介面就是提供一種統一的’協議’,而介面中的屬性也屬於’協議’中的成員.它們是公共的,靜態的,最終的常量.相當於全域性常量.

  抽象類是不’完全’的類,相當於是介面和具體類的一箇中間層.即滿足介面的抽象,也滿足具體的實現.

  如果介面可以定義變數,但是介面中的方法又都是抽象的,在介面中無法通過行為來修改屬性。有的人會說了,沒有關係,可以通過實現介面的物件的行為來修改介面中的屬性。這當然沒有問題,但是考慮這樣的情況。如果介面A中有一個public訪問許可權的靜態變數a。按照java的語義,我們可以不通過實現介面的物件來訪問變數a,通過A.a = xxx;就可以改變介面中的變數a的值了。正如抽象類中是可以這樣做的,那麼實現介面A的所有物件也都會自動擁有這一改變後的a的值了,也就是說一個地方改變了a,所有這些物件中a的值也都跟著變了。這和抽象類有什麼區別呢,怎麼體現介面更高的抽象級別呢,怎麼體現介面提供的統一的協議呢,那還要介面這種抽象來做什麼呢?所以介面中不能出現變數,如果有變數,就和介面提供的統一的抽象這種思想是抵觸的。所以介面中的屬性必然是常量,只能讀不能改,這樣才能為實現介面的物件提供一個統一的屬性。

  通俗的講,你認為是要變化的東西,就放在你自己的實現中,不能放在介面中去,介面只是對一類事物的屬性和行為更高層次的抽象。對修改關閉,對擴充套件(不同的實現implements)開放,介面是對開閉原則的一種體現。


轉載請保留原文連結:http://soft.chinabyte.com/database/262/11701262.shtml

相關推薦

為什麼口裡成員變數必須public static final的?

public這個不用說了介面是高層次的抽象,也可以理解為標準,既然是標準,那標準裡定義的屬性肯定不是為某一個具體實現標準的物件設定的,它應該是實現標準的物件們所共有的屬性,因此介面中的成員變數是static的。至於final我們可以舉個例子:現在有一個介面IA,A1和A2都實

口裡定義成員變數必須public static final型別

在interface裡面的變數都是public static final 的。所以你可以這樣寫:   public static final int i=10;   或則   int i=10;(可以省略掉一部分)   注意在宣告的時候要給變數賦予初值   解釋:   首先

為什麼java介面中的成員變數必須static關鍵字和final關鍵字修飾

對待這個問題,我建議用辯證的角度去看待!首先我們來看只有final沒有static的情況,也就是說每個實現類裡面都會有一個名字和值都一樣的變數(final強調不準改變引用地址),那麼在初始化相關實現類

為什麼Java口裡使用public static final修飾成員變數

為什麼介面中的常量必須使用public static final修飾 public: 使介面的實現類可以使用這個常量 static:static修飾就表示它屬於類的,隨的類的載入而存在的,如果是非static的話,     就表示屬於物件的,只有建立物件時才有它,而介面是不

Java中口裡定義成員變數

在interface裡面的變數都是public static final 的。所以你可以這樣寫:public static final int i=10;或則int i=10;(可以省略掉一部分) 注意在宣告的時候要給變數賦予初值 解釋: 首先你要弄清介面的含義.介面就是提供

【Java基礎知識】Java介面中的成員變數為何必須public static final

一、Java介面中的成員變數為何必須是public static final 介面中的成員變數只有一種型別,public static final ,所以可以直接省去修飾符。 為什麼介面的變數修飾符必須是public static final 型別呢? ①

解析面試題-介面中的成員變數為什麼要定義public static final

這是哥們在看面試題時問我的,有人說這樣的問題沒有意義,也有人說這樣的問題只要具備夯實的基礎就會戳破這個紙老虎 先說下這個問題吧 為什麼要把介面中的成員變數定義為public static final 首先看下介面的定義: 介面是從多個相似類中抽象出來的規範,介面不提供任何實

為什麼介面要規定成員變數必須public static final的呢?

在interface裡面的變數都是public static final 的。所以你可以這樣寫: public static final int i=10; 或則 int i=10;(可以省略掉一部分) 注意在宣告的時候要給變數賦予初值,而抽象類則不用初始化! 解釋:

Java介面中的成員變數為什麼必須宣告為public static final

一、為什麼要用final? 首先,我們應該明白一個問題。介面,實際上比抽象類更加抽象,它是最高層次的抽象。介面中的所有方法都是抽象方法,不會有任何實現方面的程式碼,而它的具體實現是要靠實現這個介面的具體類來具體實現的。而且,這個介面中的方法是不可更改的。同樣的,介面中的

“全棧2019”Java第八十一章:外部類能否訪問巢狀口裡成員

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第八十一章:外部類能否訪問巢狀接口裡的成員? 下一章 “全棧2019”Java第八十二章:巢

java,介面的變數為啥要是public static final

jdk1.8中, 介面中的變數預設是public static final 介面中的方法預設是 public abstract,除非是static方法或者預設方法 介面中的變數預設是public st

為什麼介面中的屬性必須public static final修飾?

public: 使介面的實現類可以使用這個常量 static:static修飾就表示它屬於類的,隨的類的載入而存在的,如果是非static的話,     就表示屬於物件的,只有建立物件時才有它,而介面是不能建立物件的,所以     介面的常量必須定義為static fina

口裡可以有變數麼?

一般物件比如有個具體的類Person已定義好,要例項化它, 採取的語法是  Person objPerson = new Person(); 但介面(如IConnection)不能這麼做,其不能直接New 自己,如 IConnection objIConnection = new IConnection

使用Python類的 __init__( ) 函式定義成員變數

class Test(): def __init__(self,s,i): self.s = s self.i = i

定義隱式轉換 public static implicit operator 和顯式轉換

例子:對使用者user中,使用者名稱first name和last name進行轉換成合成一個限定長度為10個字元新name。 自定義隱式轉換: namespace transduction { public partial class transductionFo

【Java關鍵字-Interface】為什麼Interface中的變數只能是 public static final

三個關鍵字在介面中的存在原因:public:介面可以被其他介面繼承,也可以被類實現,類與介面、介面與介面可能會形成多層級關係,採用public可以滿足變數的訪問範圍;static:如果變數不是static的,那麼介面必須例項化才可以訪問自己的變數,介面不能被例項化,故非s

在JAVA中利用public static final的組合方式對常量進行標識

pan tex 方法 進行 系統設置 ext lean boolean lse 在JAVA中利用public static final的組合方式對常量進行標識(固定格式)。 對於在構造方法中利用final進行賦值的時候,此時在構造之前系統設置的默認值相對於構造方法失效。

Java匿名內部類中使用外部類方法的形參或區域性變數必須宣告為final

 對於這個問題,首先我們應該明確的一點是對於匿名內部類,它可能引用三種外部變數:外部類的成員變數外部方法或作用域內的區域性變數外部方法的引數而第一種變數是不需要宣告為final的,但後兩種是需要宣告為final的。那這是為什麼呢?不急,我們首先來看第一個知識點。知識點一,匿名內部類同所有類一

建立一個public static final 型別的map 並能賦初值,並且只能在初始化的時間賦值,而不能中途修改它的值

1.寫法一  :可以寫在一個靜態的接口裡面,介面中宣告一些靜態常量,直接呼叫 public static interface ITicketPublisher {// 票卡發行方public static final int CHINA_MOBILE      = 0x05

為什麼匿名內部類用到的變數必須定為final

如果說匿名內部類無法被繼承,那麼也只能說匿名內部類是final的。如果一個類是final的,那麼所有屬於這個類的方法是final的,但它的成員變數並不是。而且被final的變數還是外部類的,外部類沒有必要不讓自己修改自己的變數的值。上述情況其實只發生在內部類引用的變數不是成員