java 常量接口_java接口定义常量研究
背景
和同事討論到,在接口中定義常量的問題,引發了爭論,即,假如在接口中定義變量,是否需要用static來限定的問題,或者說用static和不用static會有什么區別。
引論
package spring.interfaceTest;
public interface IAnimal {
//定義成靜態變量
public static int num = 10;
//定義成非靜態變量
public int num2=20;
}
即上述的常量定義,到底哪個是正確的。
接口的定義
接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
引用某位學者定義,interface即標準;即interface用于定義一個通用行的標準,因而interface并不會為某個特殊的類進行定義接口或者變量。那么interface是沒有成員變量的,即interface定義的變量針對所有類均生效,因此變量是static的。
所以上面的定義,public static int num = 10;和public int num = 10;是等價的。
討論1
interface的public是否必須?聲明成private會怎么樣?
如上面描述,interface是標準,標準是給別人用的,定義成private是沒有意義的。所以interface默認就是public。
因此
private void saying();
定義這么個方法,直接編譯器會報錯的。
討論2
是否可以嵌套定義內部接口
public interface IAnimal {
interface data{
int num1=1;
int num2=2;
};
}
調用
@Test
public void testDog(){
System.out.println(IAnimal.data.num1);
}
經過驗證可以使用,參參照標準的定義,不難理解,只是標準嵌套標準而已,在大標準下有一個小標準。
討論3
類里是否可以定義接口?
同理可得,將接口如果定義在類里面,也是具有同樣的作用,相當于一個類持有了一個標準,那么整個類的實例都將持有這個標準。
package spring.interfaceTest;
public class Dog {
interface data{
int num1=1;
int num2=2;
};
}
同理可以使用
總結
interface作為一種標準,本身就是static,為所有類共同使用,因此不存在歸屬interface本身或者單獨為某個類定義的變量或者方法
總結
以上是生活随笔為你收集整理的java 常量接口_java接口定义常量研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果iPhone 14 Plus如何裁剪
- 下一篇: java spring注入 静态方法_J