導航:首頁 > 編程語言 > java介面與多態

java介面與多態

發布時間:2022-09-18 14:23:09

Ⅰ 用java繼承,多態與介面

題目有關回答如下,供參考:

4、this:當前對象的引用
super:當前對象的超(父)類對象的一個引用

5、繼承是面向對象最顯著的一個特性。
繼承的意義:繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。
定義繼承:使用關鍵字 extends 來實現繼承

6、多態(Polymorphism)按字面的意思就是「多種狀態」,也是面向對象的一個特性。
允許將子類類型的引用賦值給父類類型的引用。

7、代碼如下:


/**
*父類(圖形)
*
*@authorqd
*
*/
abstractclassFigure{

doublearea;
}

/**
*求面積的介面
*
*@authorqd
*
*/
interfaceArea{

publicvoidgetArea();
}

/**
*三角形
*
*@authorqd
*
*/
{

//底
doublebottom;
//高
doublehigh;

publicTriangle(doublebottom,doublehigh){
super();
this.bottom=bottom;
this.high=high;
}

@Override
publicvoidgetArea(){

area=bottom*high*0.5;
System.out.println("三角形面積是:"+area);
}

}

/**
*正方形
*
*@authorqd
*
*/
{

//邊長
doublelength;

publicSquare(doublelength){
super();
this.length=length;
}

@Override
publicvoidgetArea(){

area=length*length;
System.out.println("正方形面積是:"+area);
}

}

/**
*圓
*
*@authorqd
*
*/
{

//半徑
doubleradius;

publicCircular(doubleradius){
super();
this.radius=radius;
}

@Override
publicvoidgetArea(){

area=Math.PI*radius*radius;
System.out.println("圓面積是:"+area);
}

}

publicclassTest{

publicstaticvoidmain(String[]args){

//三角形對象
Areatriangle=newTriangle(3,4);
triangle.getArea();

//正方形對象
Areasquare=newSquare(4);
square.getArea();

//圓對象
Areacircular=newCircular(2);
circular.getArea();
}
}

8、代碼如下:

/**
*球類
*
*@authorqd
*
*/
classBall{

//私有成員變數半徑
privatedoubler;

publicdoublegetR(){
returnr;
}

publicvoidsetR(doubler){
this.r=r;
}

}

/**
*檯球
*
*@authorqd
*
*/
classBilliardsextendsBall{

//私有成員變數顏色
privateStringcolor;

publicvoidsetColor(Stringcolor){
this.color=color;
}

//輸出信息
publicvoidprintMess(Billiardsbilliards,Ballball){

System.out.println("檯球的顏色是:"+billiards.color+"檯球的半徑是:"+ball.getR());
}

}

/**
*公有測試類
*
*@authorqd
*
*/
publicclassTestBall{

publicstaticvoidmain(String[]args){

Ballball=newBall();
ball.setR(5);

Billiardsbilliards=newBilliards();
billiards.setColor("白色");
billiards.printMess(billiards,ball);
}
}

7題和8題測試如下:

Ⅱ java問題中介面為什麼用多態的形式呢

就針對你貼出來的例子。如果還有個
class PeopleMapperImpl implements UserMapper{
// 操作people表的所有方法

}
你的main函數中(相當於使用端),只要把 new UserMapperImpl 切換為 new PeopleMapperImpl即可。代碼剩餘部分不需要做任何修改。
這個例子中,你的使用端,比較簡單。如果你的使用端封裝度很高。是一個factory類,有一個
UserMapper createImpl(Class class);方法。
此時你的main是這樣的
UserMapper userMapper = Factory.createImpl(PeopleMapperImpl.class);
這種代碼在項目中經常使用,這時你想根據不同的場景進行切換,會非常簡單。

Ⅲ java討論:什麼是多態和介面,為什麼需要

多態:有三要素:1.繼承 2.重寫 3.父類引用指向子類對象,提高了代碼的擴展性和維護性,可以這么理解,父類就好比是廚師長,手下一幫廚子就是子類,他們每個人可以炒不同的菜,你只需要告訴廚師長你要吃什麼,廚師長就會找到會做這道菜的廚師去給你做。如果有道菜沒有人會做,很簡單,招個會做的廚師就行了,這就是擴展性,如果有道菜吃出什麼問題了,我們換掉那個廚子就行了,不會影響別的菜,這就是維護性。
介面:即面向介面編程,最主要作用是解耦合,如此一來就會產生很多優點,就比如一個小組寫面向介面調用,另一個小組寫介面方法的實現,兩邊可以同步進行以提高效率。其次java中不支持多重繼承,介面的出現解決了這個問題,可以提高代碼的復用率,增加程序的擴展性和可維護性。

Ⅳ Java中 介面是如何實現多態的特性的

  1. 概念

    Java中多態是個很難理解的概念,但同時又是非常重要的概念,

    Java三大特性(封裝、繼承、多態)之一,
    我們從字面上理解,就是一種類型的多種狀態,
    一下通過賣小汽車的例子再次說明什麼是多態,其中利用到了介面。

  2. 案例

    //汽車介面
    interface Car{
    //要求 介面中有:汽車名稱和售價

    String getName();
    int getPrice();

    }

    //寶馬類
    class BMW implements Car{

    @Override
    public String getName() {
    // TODO Auto-generated method stub
    //return null;
    return "寶馬";
    }

    @Override
    public int getPrice() {
    // TODO Auto-generated method stub
    //return 0;
    return 300000;
    }

    }

    //奇瑞QQ
    class CheryQQ implements Car{

    @Override
    public String getName() {
    // TODO Auto-generated method stub
    return "奇瑞QQ";
    }

    @Override
    public int getPrice() {
    // TODO Auto-generated method stub
    return 40000;
    }

    }

    //汽車出售店
    class CarShop{
    //收入
    private int money=0;

    //賣出一部汽車
    public void sellCar(Car car){
    System.out.println("車型:"+car.getName()+"價格:"+car.getPrice());
    //增加賣出車售價的收入
    money+=car.getPrice();
    }
    //售車總收入
    public int getMoney(){
    return money;
    }
    }

    public class jieKouDemo {
    public static void main(String[]args){
    CarShop shop=new CarShop();
    //賣出一輛寶馬
    shop.sellCar(new BMW());
    //賣出一輛奇瑞QQ
    shop.sellCar(new CheryQQ());

    System.out.println("總收入:"+shop.getMoney());
    }

    結果:

Ⅳ 簡單的java介面與多態問題

你是怎麼理解多態,常規來講多態是指不同的實現同一個介面的類都實現介面中的方法,但各自有不同的表現。題目里只有一個Duck類實現Swimmable和FlyClimbable介面,如果要做多態必須還要另一個類來實現這兩個介面。

Ⅵ java 介面和多態的區別

java中沒多繼承一個類只能有一個父類 繼承的表現就是多態 一個父類可以有多個子類 子類可以重寫父類的方法 不同的子類調用相同的方法會有不同的結果

介面可以實現多繼承 一個類可以實現多個介面 子類在可以實現介面增加新的方法

介面也具有多態性

Ⅶ java中的介面和多態是怎麼一回事 希望給我解釋清楚 謝謝了

先說說為什麼會出現介面
兩個公司要合作,共享一些信息,比如現在都有個QQ登錄和新浪登錄。你要調用QQ的用戶,QQ需要在資料庫中查找,寫個方法
public User getUser(){
邏輯結構
SQL語句

邏輯結構
}
QQ只要把這個方法給了客戶,客戶就能將QQ用戶的詳細信息查找出來。但是,這里有個致命缺陷,QQ把邏輯結構也暴露給客戶了,客戶可以根據邏輯結構找到QQ的系統漏洞。這可是很恐怖的事情。
解決方法,寫一個介面,QQ只給客戶介面,介面中可是沒有任何代碼,那麼也就無所謂查找QQ的系統漏洞了
介面:public User getUser(); (把這句代碼給了客戶)
實現:public User getUser(){ (實現方法沒有給客戶,客戶看不到)
邏輯結構
}
多態問題,在查找QQ用戶時,你是怎麼查找的?是按照姓名還是ID號?
public User getUserByName(String name);
public User getUserById(int id); (這兩個是傳統寫法)
看看使用多態寫法的好處
public User getUser(String name);
public User getUser(int id);
你想獲得用戶的信息嗎,那好,你調用getUser();這個方法就行,至於你想通過什麼方式獲取,是通過用戶名還是ID,你自己往getUser();參數裡面放就可以了。
介面保護了系統的內部實現信息,多態使系統方法變得可擴展。當然,用途多著呢,這里只列出了一丁點。

Ⅷ JAVA里多態和介面有什麼區別

多態:就是方法的重寫,一個或多個方法進行重寫便出現多種『態』,也就是說『多態』,最後就根據main方法的需求而選擇調用合適的『態』

介面:當某個方法實現了一個介面,就必須重寫介面里邊的方法

一般來說多態里邊重寫的是方法名相同,而定義的其它參數,條件不同。 介面里邊的方法重寫的是不同的方法,那介面有多少個就重寫多少個,必須一一的去定義一遍,這里一般一個方法重寫一次,當然也可以多次,那麼也相當於多態了

Ⅸ 求詳解java中的介面與多態

多態是面向對象的核心之一,面向介面編程也是以面向對象編程為核心。
介面就是一種規范,我們平時編程要融入生活,比如說電腦的主板,上面有很多介面,插CPU得介面只要插上CPU就可以工作,不管它是哪個廠家生產的CPU,不管它內部如何工作,只要是CPU就可以用。好比你寫個介面,裡面有個fly方法,實現此介面的類都要實現這個方法,至於你如何飛是你的問題,不管你用翅膀飛,還是騎掃把飛,只要實現』fly飛『就可以。
上面是讓你將編程融入生活,說說編程的東西。
多態就是父類或者介面的引用指向子類的對象的情況。比如child類 extends Fahter類
那麼可以Father f=new Child(); 如果一段代碼可以用父類運行,當換成子類時,功能不變,那麼就是多態。多態主要一定要記得兩段話,編譯時看引用,運行時看對象。這句話的意思是在IDE編譯階段,你用f點出來的方法(f.這里會提示Father類有得實例方法)都是Fahter類自己有得,而Child類里自己有得方法不會被自動提示出來。但是如果子類重寫父類的方法了(重寫:就是子類定義了一個與父類一模一樣的方法,只是方法體不同),運行時還要看後面new出來的是誰,new Child();那麼執行要執行Child類重寫的方法體,這樣做的好處是我可以在一個方法里寫f.fly();(比如Father和Child都有fly方法)
public void test(Father f){
f.fly();
} 在這樣的代碼下 我裡面代碼不用動,但是可以讓f.fly()效果不同,因為我傳進去的子類對象可以不同,比如test(new Child1()); test(new Child2()); test(new Child3());然而這三個子類裡面的fly都有自己的具體實現,這就是多態的表現,同一個引用調用同一個方法而表現出多種狀態。介面換成父類是一樣的。 再有不懂得地方追問。 呵呵

Ⅹ JAVA里多態和介面有什麼區別

多態是面向對象編程的特徵之一,而介面是一系列方法的聲明,是一些方法特徵的集合,有特定的語法和結構,這兩者根本不是同一類型和層次上的概念。介面毫無疑問可以體現出多態性來,但是多態性未必一定要用介面,只要存在方法的重寫、重載與動態連接即可體現多態性(如存在繼承關系的類之間),所以,不存在「什麼時候用介面什麼時候用多態」的問題,程序里寫的具體代碼只可能是介面,只是這代碼可能會體現出多態性而已,兩者可以在不同的概念層次上並存,不存在沖突。
簡而言之,你可以在程序里用代碼定義一個介面,但是你不能定義一個多態,多態只是對你代碼特徵的一種描述,一種概念上的抽象和總結。

閱讀全文

與java介面與多態相關的資料

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