Ⅰ java中可否多個類實現一個介面
abstract
class和interface是Java語言中對於抽象類定義進行支持的兩種機制。它們之間區別:
介面是公開的,裡面不能有私有的方法或變數,而抽象類是可以有私有方法或私有變數的;
代碼演示:
介面A
public
interface
A
{
public
abstract
void
play()
;
public
abstract
void
beFriendly();
}
介面B
public
interface
B
{
public
abstract
void
play()
;
public
abstract
void
beFriendly();
}
一個類實現多個介面@Service("weixinPay")
public
class
WeixinPay
implements
Pay{
@Overrid
public
Object
pay(Map<String,
Object>
map){
return
"weixinpay";
}
}
介面里定義的變數只能是公共的靜態的常量,抽象類中的變數是普通變數;
實現介面的一定要實現介面里定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法,一般的應用里,最頂級的是介面,然後是抽象類實現介面,最後才到具體類實現;
介面只能做方法申明,抽象類中可以做方法申明,也可以做方法實現;
介面可以實現多重繼承,而一個類只能繼承一個超類;
(1)java實現介面擴展閱讀:
Java介面是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
兩種含義:一,Java介面,Java語言中存在的結構,有特定的語法和結構;二,一個類所具有的方法的特徵集合,是一種邏輯上的抽象。前者叫做「Java介面」,後者叫做「介面」。
功能
在Java語言規范中,一個方法的特徵僅包括方法的名字,參數的數目和種類,而不包括方法的返回類型,參數的名字以及所拋出來的異常。在Java編譯器檢查方法的重載時,會根據這些條件判斷兩個方法是否是重載方法。但在Java編譯器檢查方法的置換時,則會進一步檢查兩個方法(分處超類型和子類型)的返還類型和拋出的異常是否相同。
介面實現和類繼承的規則不同,為了數據的安全,繼承時一個類只有一個直接父類,也就是單繼承,但是一個類可以實現多個介面,介面彌補了類的不能多繼承缺點,繼承和介面的雙重設計既保持了類的數據安全也變相實現了多繼承。
Ⅱ java中如何實現介面以及介面中需要注意的
首先用interface聲明一個介面,注意介面不是類,我們習慣上可以認為他是一個抽象的類,因為它不能實現方法體,只有方法的定義。然後我們可以寫一個類去實現這個介面例如:public class Text implements IUSBable 這樣就說明你的這個類中還實現你介面中說定義的方法,不然會報錯的! 我的概念就是介面類似於生活中的水龍頭,只要你這個人有實現這個介面(水龍頭)的方法,那麼你就可以用這個水龍頭,這個比喻雖然不是那麼這樣從另一方面說明了介面擁有的可擴展性,假如以後程序升級我只要將介面中的方法增加或修改一下! 這種概念性的東西是要自己多體會的,最好聯系生活中的實例來理解,這樣會事半工倍!
Ⅲ 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怎麼樣實現介面
我給你實現了一個如下:package greatwqs.myinterface;public interface MyInterface {
/**
* 展示方法
*
*/
public void showFun();
/**
* 得到數據
* @return
*/
public String getData();
/**
* 得到此函數的方法名
* @return
*/
public String getFunName();}
----------------------------------------實現如下:package greatwqs.impl;import greatwqs.myinterface.MyInterface;public class InterfaceImpl implements MyInterface { /**
*
* 得到數據
* @return
*/ public String getData() {
return "greatwqs";
} /**
* 得到此函數的方法名
*/
public String getFunName() {
return "getFunName";
} /**
* 展示方法
*
*/
public void showFun() {
System.out.println("這個類是" + this.getClass());
}}
Ⅳ java簡單介面的實現
1:你應該定義一個抽象類,比如抽象類A,並定義一個抽象方法b()。
2:你的畫點類B應該實現介面A,畫線類C也要實現介面A。然後分別實現抽象方法b().B裡面的方法b(),實現畫點的程序,C裡面的方法b(),實現畫線的程序。
3:這樣你的draw就可以寫成draw(A a),而不用管傳入的a對象是B類型還是C類型。
4:當傳入得對象a是B的實例,那麼調用draw的結果就是畫點的,當a是C的實例,調用draw後,就是畫線的。
Ⅵ 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介面的定義與實現
方法的實現是指可以在{}中寫具體的Java代碼,介面只能是以()結尾,
public void tree();//方法的定義
//方法的具體實現
public void tree(){
system.out.println("這是一顆松樹");
}
Ⅷ java 類實現介面方法
java
介面不能實例化,沒有實現類的方法,沒有構造方法,所有的成員屬性都是常量,方法都是抽象方法。
Ⅸ java中介面的實現
你的介面中只是生明了一個模型,由它的子類去實現它的方法
你的Foo 中有個 bar的方法
這個方法,有可能有三個子類,返回的值都不一樣呢?
你看你上面的代碼,Sprite 中的bar return 0
假設現在有個類叫Sprite2 同樣也是實現了Foo 並在bar方法中return 100
那麼你的程序
Foo a =new Sprite();
a.bar(); //得到是0
Foo a =new Sprite2();
a.bar(); //得到是100
這是java的多態性,新手比較難理解
Ⅹ java 什麼是介面,如何實現介面
JAVA中被interface修飾的為介面
如public interface onClickListener{
void onClick(int KeyCode);
}
實現介面需要用implements關鍵字來實現,同時需要復寫介面中實現的方法就行
public class Key implements onClickListener{
public void onClick(int KeyCode){
// TODO 這里是實現的代碼
}
}