⑴ java中介面(interface)中的成員變數為什麼public static final 的
1.介面必須要具體類實現才有意義,所以必須是public
2. 介面中的數據對所有實現類只有一份,所以是static
3.要使實現類為了向上轉型成功,所以必須是final的.這個舉例子很好理解.比如介面A,A有變數value.實現類A1,A2,可以向上轉型.假如代碼中有一句:
A a=null;
a=....(2)實際實現類
System.out.println(a.value);
利用向上轉型,可以得到介面a的值,在第2步中,我不關你是實現類A1,還是new A2(),通過轉型,我們可以得到正確的值.要是類中可以更改,我們得不到一個統一的值,介面也沒有了意義
⑵ java成員變數是什麼
成員變數:在類體的變數部分中定義的變數,也稱為屬性。
package ch05.sample; public class ClothesString id; //實例變數
private String colorType; //實例變數
private int size; //實例變數
private static String depart; //類變數
final String design="yangzi"; //常量
代碼中的實例變數、類變數、常量都屬於成員變數,這與變數的修飾符有關系,也就是上面代碼中的private、static、final等修飾符。
⑶ 在java編程中,能對介面中的成員變數進行修改么(能的話怎麼改)
乖乖£稀飯,看了樓上哥們給出那麼多關於 interface 的基本資料,你已經很清楚 interface 里不能定義變數了。
這個限制是非常合理的,因為 interface 的主要目的之一就是要讓我們只聲明一個類型所提供的服務(功能)但不提供那些服務的任何具體實現的細節。
變數這種提供數據存儲和讀取的機制是實現細節的一部分(所以只能在提供實現細節的 class 機制里出現)。
如果你選擇定義 StuInfor 這個介面然後在 Student 類中實現該介面,你應該以相應的一對 setXxx 和 setXxx 方法(所謂的 getter/setter 方法)代替 StuInfor 里的所有「變數」(憂傷成河有提到),就如下面的 StuInfor 那樣。
StuInfor 之後的 Student 類以典型的格式實現了 StuInfor。
interface StuInfor {
//static int no = 20052359;
void setID(long id);
long getID();
//int year = 2005;
void setYear(int year);
int getYear();
//String dep = "軟體工程";
void setDepartment(String dep);
String getDepartment();
public int age();
public void showInfor();
}
class Student implements StuInfor {
private longid;
private intyear;
private Stringdep;
private Stringname;
public Student(long id, String name, int year, String dep) {
setID(id);
setYear(year);
setDepartment(dep);
this.name = name;
}
public String getName(){ return name; }
public void setID(long id){ this.id = id; }
public long getID(){ return id; }
public void setYear(int year){ this.year = year; }
public int getYear(){ return year; }
public void setDepartment(String dep){ this.dep = dep; }
public String getDepartment(){ return dep; }
public int age(){ return "你的實現".length() * 3; }
public void showInfor(){ /* 你的實現 */ }
}
⑷ java介面中為何要定義成員變數
1、介面必須要具體類實現才有意義,所以必須是public
2.、介面中的數據對所有實現類只有一份,所以是static
3、要使實現類為了向上轉型成功,所以必須是final的,比如介面A,A有變數value.實現類A1,A2,可以向上轉型.假如代碼中有一句:
A a=null;
a=....(2)實際實現類
System.out.println(a.value);
利用向上轉型,可以得到介面a的值,在第2步中,不關是實現類A1,還是new A2(),通過轉型,可以得到正確的值.要是類中可以更改,得不到一個統一的值,介面也沒有了意義!
⑸ java介面中可以定義常量變數嗎
java介面中的類欄位全部為常量,定義的方法全部為抽象方法。
⑹ java中的成員變數可以是介面型的嗎
這樣確實沒錯,不過推薦不要這么用,介面一般都是用來被繼承來實現其規定的「標准」,這樣才符合面向對象的思想。(思想很重要的,你以後會知道,早點培養比較好)
⑺ java 問題。介面中的成員變數和其實現類的關系。
不是這樣的,介面的成員變數還是屬於介面的。用實現類可以調用介面成員變數是因為java的上溯機制,一個類調用它沒有的成員變數或方法時,java會自動到這個類的父類和介面里找,如果沒有,就繼續向上找,直到找到為止,如果最後找不到就會報錯。你用介面的實現類調用介面的成員變數時,因為這個類裡面沒有,所以java會去它的父類和介面裡面找,在介面里找到了,就用介面調用這個成員變數。也就是說,表面上好像是實現類調用了介面的成員變數,實際上還是介面本身調用的。這只是一種錯覺,你還可以創建一個這個類的對象,然後用對象名調用介面的成員變數,一樣可以調得出來,原因同上。這其實也可以說是java的一個漏洞,雖然方便,但很容易造成困惑。
⑻ Java介面中的成員變數隱含的修飾符是哪些
static和 final
static修飾的是靜態 變數,
final修飾的代表是常量