導航:首頁 > 編程語言 > java介面定義屬性

java介面定義屬性

發布時間:2022-09-19 08:08:50

java中什麼是介面介面的作用是什麼

java介面:

1、Java語言中存在的結構,有特定的語法和結構。

2、Java語言中一個類所具有的方法的特徵集合,是一種邏輯上的抽象。

java介面作用:

1、利於代碼的規范

這樣做的目的一方面是為了給開發人員一個清晰的指示,告訴他們哪些業務需要實現;同時也能防止由於開發人員隨意命名而導致的命名不清晰和代碼混亂,影響開發效率。

2、有利於對代碼進行維護

可以一開始定義一個介面,把功能菜單放在介面里,然後定義類時實現這個介面,以後要換的話只不過是引用另一個類而已,這樣就達到維護、拓展的方便性。

3、保證代碼的安全和嚴密

一個好的程序一定符合高內聚低耦合的特徵,能夠讓系統的功能較好地實現,而不涉及任何具體的實現細節。這樣就比較安全、嚴密一些,這一思想一般在軟體開發中較為常見。

(1)java介面定義屬性擴展閱讀:

關於java介面的使用規范:

1、介面中可以定義常量,不能定義變數,介面中的屬性都是全局靜態常量,介面中的常量必須在定義時指定初始值。

2、 介面中所有的方法都是抽象方法,介面中方法都會自動用public abstract 修飾,即介面中只有全局抽象方法。

3、 介面不能實例化,介面中不能有構造。

4、 介面之間可以通過extends實現繼承關系,一個介面可以繼承多個介面,但介面不能繼承類。

5、 介面的實現類必須實現介面的全部方法,否則必須定義為抽象類。

參考資料來源:網路:java介面

② java怎麼定義一個介面

java中介面的定義和介面的實現

1.介面的定義

使用interface來定義一個介面。介面定義同類的定義類似,也是分為介面的聲明和介面體,其中介面體由常量定義和方法定義兩部分組成。定義介面的基本格式如下:

[修飾符] interface 介面名 [extends 父介面名列表]{

[public] [static] [final] 常量;

[public] [abstract] 方法;

}

修飾符:可選,用於指定介面的訪問許可權,可選值為public。如果省略則使用默認的訪問許可權。

介面名:必選參數,用於指定介面的名稱,介面名必須是合法的Java標識符。一般情況下,要求首字母大寫。

extends 父介面名列表:可選參數,用於指定要定義的介面繼承於哪個父介面。當使用extends關鍵字時,父介面名為必選參數。

方法:介面中的方法只有定義而沒有被實現。

例如,定義一個用於計算的介面,在該介面中定義了一個常量PI和兩個方法,具體代碼如下:

1 public interface CalInterface

2 {

3 final float PI=3.14159f;//定義用於表示圓周率的常量PI

4 float getArea(float r);//定義一個用於計算面積的方法getArea()

5 float getCircumference(float r);//定義一個用於計算周長的方法getCircumference()

6 }

注意:

與Java的類文件一樣,介面文件的文件名必須與介面名相同。

2.介面的實現

介面在定義後,就可以在類中實現該介面。在類中實現介面可以使用關鍵字implements,其基本格式如下:

[修飾符] class <類名> [extends 父類名] [implements 介面列表]{

}

修飾符:可選參數,用於指定類的訪問許可權,可選值為public、abstract和final。

類名:必選參數,用於指定類的名稱,類名必須是合法的Java標識符。一般情況下,要求首字母大寫。

extends 父類名:可選參數,用於指定要定義的類繼承於哪個父類。當使用extends關鍵字時,父類名為必選參數。

implements 介面列表:可選參數,用於指定該類實現的是哪些介面。當使用implements關鍵字時,介面列表為必選參數。當介面列表中存在多個介面名時,各個介面名之間使用逗號分隔。

在類中實現介面時,方法的名字、返回值類型、參數的個數及類型必須與介面中的完全一致,並且必須實現介面中的所有方法。例如,編寫一個名稱為Cire的類,該類實現5.7.1節中定義的介面Calculate,具體代碼如下:

1 public class Cire implements CalInterface

2 {

3 public float getArea(float r)

4 {

5 float area=PI*r*r;//計算圓面積並賦值給變數area

6 return area;//返回計算後的圓面積

7 }

8 public float getCircumference(float r)

9 {

10 float circumference=2*PI*r; //計算圓周長並賦值給變數circumference

11 return circumference; //返回計算後的圓周長

12 }

13 public static void main(String[] args)

14 {

15 Cire c = new Cire();

16 float f = c.getArea(2.0f);

17 System.out.println(Float.toString(f));

18 }

19 }

在類的繼承中,只能做單重繼承,而實現介面時,一次則可以實現多個介面,每個介面間使用逗號「,」分隔。這時就可能出現常量或方法名沖突的情況,解決該問題時,如果常量沖突,則需要明確指定常量的介面,這可以通過「介面名.常量」實現。如果出現方法沖突時,則只要實現一個方法就可以了。下面通過一個具體的實例詳細介紹以上問題的解決方法。

③ JAVA:什麼是介面,它的主要作用是什麼

java介面是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。

1、兩種含義:一,Java介面,Java語言中存在的結構,有特定的語法和結構;二,一個類所具有的方法的特徵集合,是一種邏輯上的抽象。前者叫做「Java介面」,後者叫做「介面」。

2、介面實現和類繼承的規則不同,為了數據的安全,繼承時一個類只有一個直接父類,也就是單繼承,但是一個類可以實現多個介面,介面彌補了類的不能多繼承缺點,繼承和介面的雙重設計既保持了類的數據安全也變相實現了多繼承。

3、Java介面本身沒有任何實現,因為Java介面不涉及表象,而只描述public行為,所以Java介面比Java抽象類更抽象化。但是介面不是類,不能使用new 運算符實例化一個介面。如 x=new comparable(......);//這個是錯誤來的。但是可以聲明介面變數Comparable x; //這是允許的。

4、Java介面的方法只能是抽象的和公開的,Java介面不能有構造器,Java介面可以有public、靜態的和final屬性。即介面中的屬性可以定義為 public static final int value=5;

5、這種分割體現在介面常常代表一個角色,它包裝與該角色相關的操作和屬性,而實現這個介面的類便是扮演這個角色的演員。一個角色由不同的演員來演,而不同的演員之間除了扮演一個共同的角色之外,並不要求其它的共同之處。

6、範例
定義介面格式:
[public]interface 介面名稱 [extends父介面名列表]
{
//靜態常量
[public] [static] [final] 數據類型變數名=常量值;
//抽象方法
[public] [abstract] [native] 返回值類型方法名(參數列表);
}
實現介面格式:
[修飾符] class 類名[extends 父類名] [implements 介面A,介面B,···]
{
類成員變數和成員方法;
為介面A中的所有方法編寫方法體,實現介面A;
為介面B中的所有方法編寫方法體,實現介面B;
}

④ java中介面可以聲明屬性嗎

可以,但是必須用public final static修飾,或者默認這樣
這樣的屬性就是常量了
不過正常很少這樣做
希望對你有幫助

⑤ 如何在Java類中定義介面屬性並如何使用

interfaceIFoo{
finalintfvar=123;
staticintsvar=456;
}

classTestimplementsIFoo{
publicvoidmethod(){
PrintWriterpw=newPrintWriter(System.out,true);
pw.println("IFoo.fvar="+fvar);//使用介面的fvar變數
pw.println("IFoo.svar="+svar);//使用介面的svar變數
}
}

publicstaticvoidmain(String[]args)throwsException{
(newTest()).method();
}

⑥ 如何在Java類中定義介面屬性並如何使用介面的方法

摘要
一, 介面基礎知識

1, java語言不支持一個類有多個直接的父類(多繼承),但可以實現(implements)多個介面,間接的實現了多繼承.
2, 與介面相關的設計模式:
1, 定製服務模式
設計精粒度的介面,每個介面代表相關的一組服務,通過繼承來創建復合介面
2, 適配器模式
當每個系統之間介面不匹配時,用適配器來轉換介面
3, 默認適配器模式
為介面提供簡單的默認實現
4, 代理模式
為介面的實現類創建代理類,使用者通過代理來獲得實現類的服務
5, 標識類型模式
用介面來標識一種沒有任何行為的抽象類型
6, 常量介面模式
在介面中定義靜態常量,在其它類中通過import static語句引入這些常量
3, 介面的特徵歸納:
1, 介面中的成員變數默認都是public,static,final類型的(都可省略),必須被顯示初始化,即介面中的成員變數為常量(大寫,單詞之間用"_"分隔)
2, 介面中的方法默認都是public,abstract類型的(都可省略),沒有方法體,不能被實例化
public interface A
{
int CONST = 1; //合法,CONST默認為public,static,final類型
void method(); //合法,method()默認為public,abstract類型
public abstract void method2(); //method2()顯示聲明為public,abstract類型
}
3, 介面中只能包含public,static,final類型的成員變數和public,abstract類型的成員方法
public interface A
{
int var; //錯,var是常量,必須顯示初始化
void method(){...}; //錯,介面中只能包含抽象方法
protected void method2(); //錯,介面中的方法必須是public類型
static void method3(){...}; //錯,介面中不能包含靜態方法
}
4, 介面中沒有構造方法,不能被實例化
public interface A
{
public A(){...}; //錯,介面中不能包含構造方法
void method();
}
5, 一個介面不能實現(implements)另一個介面,但它可以繼承多個其它的介面
public interface A
{
void methodA();
}
public interface B
{
void methodB();
}
public interface C extends A, B //C稱為復合介面
{
void methodC();
}
public interface C implements A{...} //錯
6, 介面必須通過類來實現它的抽象方法
public class A implements B{...}
7, 當類實現了某個介面時,它必須實現介面中的所有抽象方法,否則這個類必須聲明為抽象的
8, 不允許創建介面的實例(實例化),但允許定義介面類型的引用變數,該引用變數引用實現了這個介面的類的實例
public class B implements A{}
A a = new B(); //引用變數a被定義為A介面類型,引用了B實例
A a = new A(); //錯誤,介面不允許實例化
9, 一個類只能繼承一個直接的父類,但可以實現多個介面,間接的實現了多繼承.
public class A extends B implements C, D{...} //B為class,C,D為interface
4, 通過介面,可以方便地對已經存在的系統進行自下而上的抽象,對於任意兩個類,不管它們是否屬於同一個父類,只有它
們存在相同的功能,就能從中抽象出一個介面類型.對於已經存在的繼承樹,可以方便的從類中抽象出新的介面,但從類
中抽象出新的抽象類卻不那麼容易,因此介面更有利於軟體系統的維護與重構.對於兩個系統,通過介面交互比通過抽象
類交互能獲得更好的松耦合.
5, 介面是構建松耦合軟體系統的重要法寶,由於介面用於描述系統對外提供的所有服務,因此介面中的成員變數和方法都
必須是public類型的,確保外部使用者能訪問它們,介面僅僅描述系統能做什麼,但不指明如何去做,所有介面中的方法
都是抽象方法,介面不涉及和任何具體實例相關的細節,因此介面沒有構造方法,不能被實例化,沒有實例變數.二, 比較抽象類與介面
1, 抽象類與介面都位於繼承樹的上層
相同點
1, 代表系統的抽象層,當一個系統使用一顆繼承樹上的類時,應該盡量把引用變數聲明為繼承樹的上層抽象類型,
這樣可以提高兩個系統之間的送耦合
2, 都不能被實例化
3, 都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,但不提供具體的實現
不同點:
1, 在抽象類中可以為部分方法提供默認的實現,從而避免在子類中重復實現它們,這是抽象類的優勢,但這一優勢
限制了多繼承,而介面中只能包含抽象方法.
由於在抽象類中允許加入具體方法,因此擴展抽象類的功能,即向抽象類中添加具體方法,不會對它的子類造
成影響,而對於介面,一旦介面被公布,就必須非常穩定,因為隨意在介面中添加抽象方法,會影響到所有的實
現類,這些實現類要麼實現新增的抽象方法,要麼聲明為抽象類
2, 一個類只能繼承一個直接的父類,這個父類可能是抽象類,但一個類可以實現多個介面,這是介面的優勢,但這
一優勢是以不允許為任何方法提供實現作為代價的三, 為什麼Java語言不允許多重繼承呢?
當子類覆蓋父類的實例方法或隱藏父類的成員變數及靜態方法時,Java虛擬機採用不同的綁定規則,假如還允許
一個類有多個直接的父類,那麼會使綁定規則更加復雜,因此,為了簡化系統結構設計和動態綁定機制,Java語言
禁止多重繼承.
而介面中只有抽象方法,沒有實例變數和靜態方法,只有介面的實現類才會實現介面的抽象方法(介面中的抽象方
法是通過類來實現的),因此,一個類即使有多個介面,也不會增加Java虛擬機進行動態綁定的復雜度.因為Java虛
擬機永遠不會把方法與介面綁定,而只會把方法與它的實現類綁定.四, 使用介面和抽象類的總體原則:
1, 用介面作為系統與外界交互的窗口
站在外界使用者(另一個系統)的角度,介面向使用者承諾系統能提供哪些服務,站在系統本身的角度,介面制定
系統必須實現哪些服務,介面是系統中最高層次的抽象類型.通過介面交互可以提高兩個系統之間的送耦合
系統A通過系統B進行交互,是指系統A訪問系統B時,
把引用變數聲明為系統B中的介面類型,該引用變數引用系統B中介面的實現類的實例.
public interface B
{
}
public class C implements B
{
}
public class A
{
}
B a = new C();
2, 介面本身必須非常穩定,介面一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響
3, 用抽象類來定製系統中的擴展點
抽象類來完成部分實現,還要一些功能通過它的子類來實現 2008/1/9
一, Java多態機制中的綁定規則深入剖析
class Base
{
String var = "BaseVar"; //實例變數
static String staticVar = "StaticBaseVar"; //靜態變數 void method() //實例方法
{
System.out.println("Base method");
} static void staticMethod() //靜態方法
{
System.out.println("Static Base method");
}
}public class Sub extends Base
{
String var = "SubVar"; //實例變數
static String staticVar = "StaticSubVar"; //靜態變數

void method() //隱藏父類的method()方法
{
System.out.println("Sub method");
} static void staticMethod() //隱藏父類的staticMethod()方法
{
System.out.println("Static Sub method");
} String subVar = "Var only belonging to Sub"; void subMethod()
{
System.out.println("method only belonging to Sub");
} public static void main(String args[])
{
//引用變數who被聲明為Base類型,引用Sub類的實例
Base who = new Sub();

//成員變數(靜態變數,實例變數)與引用變數所聲明的類型(Base類型)的成員變數綁定
System.out.println("who.var = "+who.var); //所以,列印Base類的var變數
System.out.println("who.staticVar = "+who.staticVar); //所以,列印Base類的staticVar變數 //實例方法與引用變數實際引用的對象(Sub對象)的方法綁定
who.method(); //所以,列印Sub實例的method()方法 //靜態方法與引用變數所聲明的類型(Base類型)的方法綁定
who.staticMethod(); //所以,列印Base類的staticMethod()方法
}
}

【分析過程】
1, 對於一個引用類型的變數,Java編譯器按照它聲明的類型來處理.
例如在以下代碼中,編譯器認為who是Base類型的引用變數,不存在subVar成員變數喝subMethod()方法,編譯報錯
Base who = new Sub(); //引用變數who被聲明為Base類型,引用Sub類的實例
who.subVar = "123"; //編譯錯,在Base類中沒有subVar屬性
who.subMethod(); //編譯錯,在Base類中沒有submethod()方法
如果要訪問Sub類的成員,必須通過強制類型轉換:
Base who = new Sub();
//把Base引用類型的who成員變數強制轉換為Sub引用類型
//把引用變數轉換為子類的類型稱為向下轉型,把引用變數轉換為父類的類型稱為向上轉型
((Sub)who).subVar = "123";
((Sub)who).subMethod();
Java編譯器允許在具有直接或間接繼承關系的類之間進行類型轉換,對於向上轉型,Java編譯器會自動進行,對於
向下轉型,需要進行強制類型轉換
如果兩種類型之間沒有繼續關系,即不在繼承樹的同一個繼承分支上,那麼Java編譯器不允許進行類型轉換
2, 對於一個引用類型的變數,運行時Java虛擬機按照它實際引用的對象來處理
例如以下代碼雖編譯可通過,但運行時會拋出ClassCastException運行時異常
Base who = new Base(); //who引用Base類的實例
Sub s = (Sub)who; //運行時會拋出ClassCastException
在運行時,子類的對象可以轉換為父類類型,而父類的對象實際上無法轉換為子類類型
3, 在運行時環境中,通過引用類型變數來訪問所引用對象的方法和屬性時,Java虛擬機採用以下綁定規則:
1, 實例方法與引用變數實際引用的對象的方法綁定,這種綁定屬於動態綁定,因為是在運行時由Java虛擬機
動態決定的
2, 靜態方法與引用變數所聲明的類型的方法綁定,這種綁定屬於靜態綁定,因為實際上是在編譯階段就已經
綁定
3, 成員變數(靜態變數,實例變數)與引用變數所聲明的類型的成員變數綁定,這種綁定屬於靜態綁定,因為
實際上是在編譯階段就已經綁定

⑦ java里,介面中可以定義哪四種成員,各有何意義

公有、靜態、常量(JDK8以前):可以被子類繼承;
公有、抽象方法(JDK8以前):強制子類必須重寫;

公有、默認方法:(JDK8開始)必須用public,default修飾,必須有方法體:被子類繼承,子類可以重寫,也可以不重寫;
.公有、靜態方法(JDK8開始):不能被子類繼承,就屬於本介面,通過"介面名.靜態方法名"訪問,工具性方法;

⑧ java中介面為什麼不能定義成私有的方法和屬性

介面不是不能定義final,介面中的變數是public static final所修飾的(是常量)

方法是public abstract所修飾的,那個答案有錯

介面是對外擴展功能用的,所以只能是public

(私有的寫成介面有什麼用,就好比你電腦的usb插槽是不是只能在外邊?假如你把插槽封裝到機殼裡面有什麼意義?)

abstract就是和抽象類一樣

介面可以大致理解為一個特殊的抽象類,裡面所有方法都是抽象的

抽象類和介面都不能實例化(因為實例化出來的方法沒有方法體,沒有意義)

一個類implement一個介面時必須要實現所有內部的抽象方法,否則會報錯

⑨ java介面定義什麼

java介面是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵,沒有方法的實現,java使用關鍵字interface來定義.介面的定義和類的定義很像,分為介面的聲明和介面體。

1.介面的聲明
interface name

2.介面體
介面體中常包含常量定義和方法定義.
介面體中只進行方法的聲明,不許提供方法的實現,所以方法的定義沒有方法體,用」;」結尾.

3.介面的使用
一個類通過關鍵字implements聲明自己使用一個或多個介面.
如:
class A implements B,C //類A使用介面B和介面C
要注意: 介面中的方法被默認是public的,所以類在實現介面方法時,一定要用public修飾.
如果介面方法的返回型不是void,那麼在類中實現該介面方法時,方法體至少要有一個return語句,如果介面方法的返回型 是void型,類體除了兩個大括弧外,可以沒有任何語句.

閱讀全文

與java介面定義屬性相關的資料

熱點內容
安卓如何查看異常重啟 瀏覽:715
解壓音樂排名 瀏覽:383
安卓手機瀏覽器怎麼掃二維碼 瀏覽:715
通達信成本均線源碼 瀏覽:614
可以下載的解壓音頻 瀏覽:564
海賊王怎麼換伺服器 瀏覽:318
計算機上的共享文件夾映射 瀏覽:940
榮耀安裝包在文件夾哪裡 瀏覽:195
機票php源碼 瀏覽:231
linux共享mac 瀏覽:923
中國沒有國外的伺服器地址 瀏覽:759
為什麼退款伺服器連接錯誤 瀏覽:557
android簡訊存儲位置 瀏覽:972
unix網路編程卷4 瀏覽:808
找靚機app下單什麼時候發貨 瀏覽:413
android一個應用兩個進程 瀏覽:803
linux硬碟復制 瀏覽:808
php圖片伺服器搭建 瀏覽:801
下載壓縮文件怎麼打開 瀏覽:194
新建文件夾叫什麼名字 瀏覽:567