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

java介面實現

發布時間: 2022-04-13 04:41:08

java中的介面怎麼實現

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

}運行結果:矩陣的長3
矩陣的寬12
矩陣的面積12
矩形的周長 14註:介面單存放,介面實現類和測試類可以存放在一個文件中

❷ java 什麼是介面,如何實現介面

JAVA中被interface修飾的為介面
如public interface onClickListener{
void onClick(int KeyCode);
}
實現介面需要用implements關鍵字來實現,同時需要復寫介面中實現的方法就行
public class Key implements onClickListener{
public void onClick(int KeyCode){
// TODO 這里是實現的代碼
}
}

❸ java里實現一個介面的類必須要實現介面里的所有方法嗎

一、實現介面或繼承抽象類的非抽象子類必須實現介面的所有方法或抽象類的所有抽象方法。

介面中的所有方法均為抽象方法,抽象類中包含非抽象方法和抽象方法。如果一個非抽象子類實現了介面,那麼該子類必須實現父介面的所有方法。如果一個非抽象子類繼承了抽象類,那麼該子類必須實現抽象類的所有抽象方法。


二、實現方案

(一)實現介面

1. 定義介面

/**
*介面:表示人類行為
*/
interfaceBehavor{
/**
*抽象方法:「吃飯」方法
*/
voideat();

/**
*抽象方法:「睡覺」方法
*/
voidsleep();
}


2. 定義子類,實現介面

/**
*子類:表示人類,實現「行為」介面
*/
classPersonimplementsBehavor{
/**
*姓名
*/
protectedStringname=null;

publicPerson(Stringname){
this.name=name;
}

//實現介面的抽象方法
@Override
publicvoideat(){
System.out.println(name+"正在吃飯......");
}

//實現介面的抽象方法
@Override
publicvoidsleep(){
System.out.println(name+"正在睡覺......");
}
}


3. 定義調用類,調用方法

publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newPerson("張三其");
p.eat();
p.sleep();
}
}


(二)繼承抽象類

1. 定義抽象類

/**
*抽象類:表示人類
*/
abstractclassPerson{
/**
*姓名
*/
protectedStringname=null;

publicPerson(Stringname){
this.name=name;
}

/**
*抽象方法:吃飯
*/
publicabstractvoideat();

/**
*抽象方法:睡覺
*/
publicabstractvoidsleep();
}


2. 定義子類,繼承抽象類

/**
*子類:學生類
*/
classStudentextendsPerson{
publicStudent(Stringname){
super(name);
}

//實現抽象類的抽象方法
@Override
publicvoideat(){
System.out.println("學生"+name+"正在吃飯......");
}

//實現抽象類的抽象方法
@Override
publicvoidsleep(){
System.out.println("學生"+name+"正在吃飯......");
}
}


3. 定義調用類,調用方法

publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newStudent("張三其");
p.eat();
p.sleep();
}
}

❹ 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。

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

❺ 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;

}

❻ 用Java怎麼樣實現介面

新建類的時候,有個interface的選項 你點添加 在對話框裡面把你要實現的介面名打上去 可能會有很多提示 不過後面都有包名 你可以根據包名確認你要實現的是那個介面 就OK了如果是類已經建好了 可以在類名後打implements 在打你要實現的介面名然後按alt加問號 就有提示是那個包裡面的 你就可以根據包名就導入進來了 然後會提示錯誤 你點它就把介面裡面的所有方法都實現了

❼ Java介面的定義與實現

方法的實現是指可以在{}中寫具體的Java代碼,介面只能是以()結尾,
public void tree();//方法的定義

//方法的具體實現
public void tree(){
system.out.println("這是一顆松樹");

}

❽ 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, 用抽象類來定製系統中的擴展點
抽象類來完成部分實現,還要一些功能通過它的子類來實現

❾ 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、抽象類是對象的抽象,然而介面是一種行為規范。

❿ Java中的介面實現

interface iShape2D //定義介面??
{
final double pi=3.14;
abstract void area();
}

class CRectangle implements iShape2D // 實現CRectangle類
{
int width,height;
public CRectangle(int w,int h){
width=w;
height=h;
}
public void area(){ // 定義area()的處理方式
System.out.println("area="+width*height);
}
}

class CCircle implements iShape2D // 實現CCircle類
{
double radius;
public CCircle(double r){
radius=r;
}
public void area(){ // 定義area()的處理方式
System.out.println("area="+pi*radius*radius);
}
}

public class app10_4
{
public static void main(String args[])
{
CRectangle rect=new CRectangle(5,10);
rect.area(); //調用CRectangle類里的area() method

CCircle cir=new CCircle(2.0);
cir.area(); // 調用CCircl類里的area() method
}
}
// app10_5,通過介面類型的變數來訪問對象
class app10_5
{
public static void main(String args[])
{
iShape2D var1,var2; // ?派?明介面類型的變數
var1=new CRectangle(5,10); // 將介面類型的變數var1指向新建的對象
var1.area(); // 通過介面var1調用show() method

var2=new CCircle(2.0); // 將介面類型的變數var2指向新建的對象
var2.area(); // 通過介面var2調用show() method
}
}
// app10_6, 實現兩個以上的介面??
interface iShape2D // 定義iShape2D介面
{
final double pi=3.14;
abstract void area();
}

interface iColor // 定義iColor介面
{
abstract void setColor(String str);
}

class CCircle implements iShape2D,iColor // 實現iShape2D與iColor介面
{
double radius;
String color;
public CCircle(double r){
radius=r;
}
public void setColor(String str){ // 定義iColor介面里的setColor()
color=str;
System.out.println("color="+color);
}
public void area(){ // 定義iShape2D介面里的area() method
System.out.println("area="+pi*radius*radius);
}
}

public class app10_6
{
public static void main(String args[])
{
CCircle cir;
cir=new CCircle(2.0);
cir.setColor("Blue"); // 調用CCircl類里的setColor() method
cir.area(); // 調用CCircl類里的show() method
}
}

熱點內容
java單例實現 發布:2025-01-20 11:48:40 瀏覽:333
cad為什麼載入不了配置 發布:2025-01-20 11:37:45 瀏覽:16
伺服器記錄的手機ip 發布:2025-01-20 11:32:47 瀏覽:672
sparksql查詢 發布:2025-01-20 11:27:51 瀏覽:204
安卓奧特曼格鬥進化1怎麼發大招 發布:2025-01-20 11:17:03 瀏覽:605
試驗數據存儲 發布:2025-01-20 11:03:38 瀏覽:305
聯想如何將密碼退出 發布:2025-01-20 10:51:41 瀏覽:972
ftp傳輸文件連接失敗 發布:2025-01-20 10:49:39 瀏覽:723
xp共享訪問不了 發布:2025-01-20 10:40:05 瀏覽:946
基恩士plc編程手冊 發布:2025-01-20 10:11:30 瀏覽:910