題目如下:(多選題)請選擇以下接口定義正確的方法() A:public static void main (String[] args); B:private void test(); C:public void test2(); D:static void test3(){};
正確答案為:C D。
原因為:
A 沒有提供默認實現;
B 選擇使用了private來修飾(在接口中是不允許使用private修飾符來修飾方法的)。
在做這個題的時候,自己基本是處於懵逼狀態,因為關於接口自己只知道:接口中的定義的方法一定是抽象的方法,不允許有默認實現。
今天寫了一個Demo實驗了下,發現關於接口中定義方法的規則有如下幾點:
1)接口中是可以定義靜態方法的,靜態方法必須要有實現。且這個靜態方法只能用public修飾或不寫。
例如:public static void test(){} 或 static void test(){}.//public省略不寫默認也是用public來修飾。
靜態方法的方法名是可以任意的,即可以定義main方法,例如:public static void main (String[] args){}。

2)對於普通方法,修飾符為: public, abstract, default以及組合 public abstract

最后對接口中的屬性進行一點說明
首先你要弄清接口的含義.接口就是提供一種統一的’協議’,而接口中的屬性也屬於’協議’中的成員.它們是公共的,靜態的,最終的常量.相當於全局常量。
在interface里面的變量都是public static final 的。所以你可以這樣寫:
public static final int i=10;
或則
int i=10;(可以省略掉一部分)
注意在聲明的時候要給變量賦予初值,不能是默認初值。


通過對比可以看到,在接口中是常量,在類中只有用了 final關鍵字才成為常量
基於接口的種種特性,因此,你認為是要變化的東西,就放在你自己的實現中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關閉,對擴展(不同的實現implements)開放,接口是對開閉原則的一種體現。
https://blog.csdn.net/u010412719/article/details/52536233
