前言:c++學的java都忘記了不少
interface(接口)可將其想象為一個"純"抽象類。它允許創建者規定一個類的基本形式:方法名、自變量列表以及返回類型,但不實現方法主體
接口也可包含基本數據類型的數據成員,但它們都默認為public
、static
和final
。
接口中定義的方法默認為public
、abstract
。
為什么Java接口中的成員變量默認為(public、static、final)、成員方法為(public、abstract)呢?
原因:接口是一種高度抽象的模版,接口中的成員變量是模版的一部分,其接口的實現類必須共有這些成員變量,所以成員變量的修飾符默認為public、static、final。static使得實現這個接口的類,可以直接使用這個變量。
如果是非靜態變量,那么接口的多個實現類可能出現變量名重名的現象。
final表示被修飾的變量為常數,不可以修改。一個既是static又是final的字段表示只占據一段不能改變的存儲空間。如果是非final變量,那么接口的實現類可以修改變量的值,這與抽象類沒有區別了。
由於接口起到標准化和規范化的作用,所以其成員變量默認修飾符為static、final。