當前位置:首頁 » 編程語言 » 實現介面java

實現介面java

發布時間: 2023-03-25 09:10:39

1. java中的介面怎麼實現

舉個面積的例子:在java中,定義一個介面,聲明計算長方形面積和周長的抽象方法,再用一個類去實現這個介面,再編寫一個測試類去使用這個介面。首先,介面必須單獨存放,如果我們用eclipse編程的話,它們提示:The public type **** must be defined in its own file,意思是必須要定義在其自己的文件中,所以要為介面文件單獨存放起來,舉例,我們的介面滑擾要實現獲到矩形的長,寬,面積,周長,所以定義以下的介面。public interface calrect {x0dx0apublic abstract int calarea();x0dx0apublic abstract int calgirth();x0dx0apublic abstract int getx();x0dx0apublic abstract int gety();x0dx0a}注意,定義介面就像定義類一樣,介面的訪問控制符只能用public,用public定義的介面可以被所有的類和包引用,而預設的則只能罩納被同一個包中的其他類和介面引用,這符合JAVA中訪問控制符的一般要求,關於介面再引用其他介面則是後話。以上介面文件名為calrect.java.另外需要指出的是介面中不能給方法給出方法體。接下來,需要定義一個類來實現介面,因為不知道JAVA的內置矩形類是什麼名,所以為了安全,將該類定義為RRect,這可以認為是一物讓沒種安全策略。關於implements,可以參考其他資料。該類引用了介面calrect,所以必須對calrect中的方法一一實現。//定義矩形類 應用介面class RRect implements calrect{private int x;x0dx0aprivate int y;public RRect (){x0dx0a x=3;y=4;x0dx0a}x0dx0apublic int calarea(){x0dx0a return x*y;x0dx0a}x0dx0apublic int calgirth(){x0dx0a return x*2+y*2;x0dx0a}x0dx0apublic int getx(){x0dx0a return x;x0dx0a}x0dx0apublic int gety(){x0dx0a return y;x0dx0a}x0dx0a}//接下來,定義一個測試類,所謂測試類,我理解為定義一個類,在其定義類RRect的對象,並驗證其中的方法,看看是不是可以正常使用//定義Class1類x0dx0apublic class Class1{x0dx0aRRect rect;x0dx0apublic static void main(String []args){x0dx0a RRect rect=new RRect();x0dx0a System.out.println("矩陣的長"+ rect.getx());x0dx0a System.out.println("矩陣的寬"+ rect.calarea());x0dx0a System.out.println("矩陣的面積"+ rect.calarea());x0dx0a System.out.println("矩形的周長 "+rect.calgirth());x0dx0a}x0dx0ax0dx0a}運行結果:矩陣的長3x0dx0a矩陣的寬12x0dx0a矩陣的面積12x0dx0a矩形的周長 14註:介面單存放,介面實現類和測試類可以存放在一個文件中

2. JAVA實現介面的關鍵字是什麼

Java中定義介面的關鍵字是什麼?. Java中定義介面的關鍵字是「interface」。. 「interface」是面向對象編程語言中介面操作的關鍵字,功能是把所需成員組合起來,用來裝封一定功能的集合。. 介面不能直接實例化,也不能包含成員的任何代碼,只定義成員本身。.

3. Java實現Comparable介面

Java lang Comparable介面中唯答纖一的方法是pareTo() 在該方法中可以進行簡單的相等比較以及執行順序比較 介面實現框架如下 [java] view plainprint?

public class ComparableImpl implements Comparable<ComparableImpl> {

@Override public int pareTo(ComparableImpl o) { // TODO Auto generated method stub return }

}一個類實現了Comparable介面 則說明它的實例具有內在的排序關系 就可以跟多種泛型演算法以及依賴於該介面的集合實現進行協作 依賴於比較關系的類包括有序集合類TreeSet和TreeMap 以及工具類Collections和Arrays 若一個數組中的元素實現了Comparable介面 則可以直接使用Arrays類的sort方法對這個數組進行排序 Java平台庫中的所有值類(value classes)都實現了Comparable介面

殲卜Comparable的規范說明如下 將當前這個對象與指定對象進行順序比較 當該對象小於 等於或大於指定對象時 分別返回一個負整數 零或者正整數 如果由於指定對象的類型而使得無法進行比較 則拋出ClassCastException異常

pareTo方法的實現必須滿足如下幾個限制條件 自反性 對稱性 傳遞性和非空性

一般氏舉穗來說 paraTo方法的相等測試應該返回與equals方法相同的結果 如果相同 則由pareTo方法施加的順序關系被稱為 與equals一致 如果不同 則順序關系被稱為 與equals不一致 如果一個類的pareTo方法與equals方法的順序關系不一致 那麼它仍然能正常工作 只是 如果一個有序集合包含了該類的實例 則這個集合可能無法遵循某些集合介面的通用約定 因為集合介面的通用約定是按照equals方法定義的 而有序集合使用了由pareTo施加的相等測試 下面是實現了Comparable介面的類 同時 該類還重寫了equals和hashCode等方法 [java] view plainprint?

public abstract class ZLTextPosition implements Comparable<ZLTextPosition> {

public abstract int getParagraphIndex() public abstract int getElementIndex() public abstract int getCharIndex()

public boolean samePositionAs(ZLTextPosition position) { return getParagraphIndex() == position getParagraphIndex() && getElementIndex() == position getElementIndex() && getCharIndex() == position getCharIndex() }

@Override public int pareTo(ZLTextPosition position) { final int p = getParagraphIndex() final int p = position getParagraphIndex() if (p != p ) { return p < p ? }

final int e = getElementIndex() final int e = position getElementIndex() if (e != e ) { return e < e ? }

final int c = getCharIndex() final int c = position getCharIndex() if (c != c ) { return c < c ? } return }

@Override public boolean equals(Object obj) { if (this == obj) { return true } if (!(obj instanceof ZLTextPosition)) { return false }

final ZLTextPosition position = (ZLTextPosition)obj return samePositionAs(position) }

@Override public int hashCode() { return (getParagraphIndex() << ) + (getElementIndex() << ) + getCharIndex() }

@Override public String toString() { return getClass() getName() + + getParagraphIndex() + + getElementIndex() + + getCharIndex() }

lishixin/Article/program/Java/hx/201311/26372

4. JAVA:一個類實現多個介面

//A介面interface A{

public int getA();

}

//B介面

interface B{

public int getB();

}

//實現了某個介面必須實現其全部的方法

public class ImpAB implements A,B{

public int getA() {

return 0;

}

public int getB() {

return 0;

}

}

(4)實現介面java擴展閱讀:

功能

在Java語言規范中,一個方法的特徵僅包括方法的名字,參數的數目和種類,而不包括方法的襪遲返回類型,參數的名字以及所拋出來的異常告宴李。

在Java編譯器檢查方法的重載時,會根據這些條件判斷兩個方法是否是重載方法。但在Java編譯器檢查方法的置換時,則會進一步檢查兩個方法(分處超類型和子類型)的返還類型和拋出的異常是否相同。

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

Java介面本身沒有任何實現,因為Java介面不涉及表象,而只描述public行為,所以Java介面比Java抽象類更抽象化。但是介面不是類,不能使用new 運算符實例化一個介面。

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

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

5. java怎麼使用介面 java如何實現介面操作

介面是Java 實現多繼承的一種機制,一個類可以實現一個或多個介面。介面是一系列

方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些

方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為。簡單的說介面不

是類,但是定義了一組對類的要求,實現介面的某些類要與介面一致。

在Java 中使用關鍵字interface 來定義介面。例如:

publicinterfaceCompare{
publicintcompare(ObjectotherObj);
}

Compare 介面定義了一種操作compare,該操作應當完成與另一個對象進行比較的功能。

它假定某個實現這一介面的類的對象x 在調用該方法時,例如x . compare(y),如果x 小於y,

返回負數,相等返回0,否則返回正數。

舉例

{
privateStringsId;//學號
//Constructor
10
publicStudent(){
this("","","");
}
publicStudent(Stringname,Stringid,StringsId){
super(name,id);
this.sId=sId;
}
publicvoidsayHello(){
super.sayHello();
System.out.println(".");
}
//get&setmethod
publicStringgetSId(){
returnthis.sId;}
publicvoidsetSId(StringsId){
this.sId=sId;}
//implementsCompareinterface
publicintcompare(ObjectotherObj){
Studentother=(Student)otherObj;
returnthis.sId.compareTo(other.sId);
}
}//endofclass

6. Java中 一個類實現了某介面 則必須實現該介面中的所有方法么

不一定,關鍵要看子類是否是抽象類。
如果子類是非抽象類,則必須實現介面中的所有方法;
如果子類是抽象類,則可以不實現介面中的所有方法,因為抽象類中允許有抽象方法的存在!
1、抽象類定義
抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱為抽象類,它不能生成對象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象。抽象類是不完整的,它只能用作基類。在面向對象方法中,抽象類主要用來進行類型隱藏和充當全局變數的角色。
2、抽象類特點
1)抽象類不能實例化。
2)抽象類可以包含抽象方法和抽象訪問器。
3)不能用 sealed 修飾符修飾抽象類,因為這兩個修飾符的含義是相反的。 採用 sealed 修飾符的類無法繼承,而 abstract 修飾符要求對類進行繼承。
4)從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實際實現。
3、與具體類的比較

1)抽象類不能直接實例化,並且對抽象類使用 new 運算符會導致編譯時錯誤。雖然一些變數和值在編譯時的類型可以是抽象的,但是這樣的變數和值必須或者為 null,或者含有對非抽象類的實例的引用(此非抽象類是從抽象類派生的)。
2)允許(但不要求)抽象類包含抽象成員。
3)抽象類不能被密封。
4、與介面的比較
1)相同點

a、不能實例化;
b、包含未實現的方法聲明;
c、派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員(不僅是方法包括其他成員)
2)不同點

a、類可以實現無限個介面,但僅能從一個抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實現介面,從而得出介面是用來解決多重繼承問題的。
b、抽象類當中可以存在非抽象的方法,可介面不能,且它裡面的方法只是一個聲明必須用public來修飾沒有具體實現的方法。
c、抽象類中的成員變數可以被不同的修飾符來修飾,可介面中的成員變數默認的都是靜態常量(static final)。
d、抽象類是對象的抽象,然而介面是一種行為規范。

7. java 介面怎麼用應該怎麼實現

java語言不支持一個類有多個直接的父類(多繼承),但可以實現(implements)多個介面,間接的實現了多繼承
用法public class test implements 介面名稱
當類實現了某個Java介面時,它必須實現介面中的所有抽象方法,否則這個類必須聲明為抽象的

比較抽象類與介面
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, Java介面本身必須非常穩定,Java介面一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響
3, 用抽象類來定製系統中的擴展點
抽象類來完成部分實現,還要一些功能通過它的子類來實現

8. java 類實現介面方法

public class Aircraft implements Vehicle{
private int speed;
public Aircraft(){}
public void setSpeed(int speed){
this.speed=speed;
}
public int getSpeed(){
return this.speed;
}
public void start(int speed){
setSpeed(speed);
}
public void stop(){
this.speed=0;
}
}
Bus同上。
希望對你有所幫助。。。

9. java 介面到底怎麼用 到底應該怎麼實現

介面是很重要的面向對象方式,繼承介面的類不用全部實現定義的介面,可以這么說,我定義了好多介面,某個類可以陸辯這么實現這個介面,到另一個類你又想那麼實現介面,都是含扮可以的。

或者定義完介面不想管他都可以,雖然很冗餘。介面不多了不影響操作談悉灶。

比如:

定義了一個線性表介面。

public interface Ilist {

public void clear();

public boolean isEmpty();

public int length();

}

我想具體實現的話就建立以下實現類:

import .Ilist;

public class SqList implements Ilist {

private Object[] listElem;// 線性表存儲空間

private int curLen;// 線性表的當前長度

// 順序表的構造函數,構造一個存儲空間容量為maxSize的線性表

public SqList(int maxSize) {

curLen = 0;

listElem = new Object[maxSize];

}

public void clear() {

curLen = 0;

}

public boolean isEmpty() {

return curLen == 0;// curLen==0時為true,!=0時為false;

}

public int length() {

return curLen;

}

熱點內容
為什麼微信掃碼安卓手機很慢 發布:2024-11-05 01:58:01 瀏覽:534
SLSB演算法 發布:2024-11-05 01:49:44 瀏覽:130
比安卓頭子短一點的是什麼數據線 發布:2024-11-05 01:43:53 瀏覽:534
c語言多選 發布:2024-11-05 01:41:31 瀏覽:302
c語言判斷一個數是否是素數 發布:2024-11-05 01:36:32 瀏覽:833
虛擬頁式存儲 發布:2024-11-05 01:28:01 瀏覽:214
java比較炫的小程序 發布:2024-11-05 01:27:17 瀏覽:788
如何在ftp上開放執行許可權 發布:2024-11-05 01:22:51 瀏覽:729
編程半徑為5 發布:2024-11-05 01:22:43 瀏覽:290
linuxnetstatan命令 發布:2024-11-05 00:54:49 瀏覽:829