A. 求詳解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都有自己的具體實現,這就是多態的表現,同一個引用調用同一個方法而表現出多種狀態。介面換成父類是一樣的。 再有不懂得地方追問。 呵呵
B. JAVA里多態和介面有什麼區別
多態是面向對象編程的特徵之一,而介面是一系列方法的聲明,是一些方法特徵的集合,有特定的語法和結構,這兩者根本不是同一類型和層次上的概念。介面毫無疑問可以體現出多態性來,但是多態性未必一定要用介面,只要存在方法的重寫、重載與動態連接即可體現多態性(如存在繼承關系的類之間),所以,不存在「什麼時候用介面什麼時候用多態」的問題,程序里寫的具體代碼只可能是介面,只是這代碼可能會體現出多態性而已,兩者可以在不同的概念層次上並存,不存在沖突。
簡而言之,你可以在程序里用代碼定義一個介面,但是你不能定義一個多態,多態只是對你代碼特徵的一種描述,一種概念上的抽象和總結。
C. java介面類得實現以及多態性
沒有java介面類,只有介面,類,介面對應的實現類;
A介面interface,B類class實現A介面implements,C類和D類都繼承B類extends【這個就是多態】
D. java中如何正確使用介面 用介面如何正確的實現多態
這個東西很范哦 。。。。 總的來說就是你有一組性質相類似的類需要創建的時候,就可以用到介面來規定相同的方法, 在實際項目開發當中 例如MVC 模式開發 當中的 資料庫的相應操作類,可以建介面 也可以用介面來做標示, 比如 序列化的介面就是一個空的介面標示。
重寫介面的方法就是實現了 方法的多態啊, tostring 這個方法應該是重寫的比較多的吧!
E. java介面有多態性,這個怎麼理解
樓主可以這樣理解,介面的出現是為了更好的實現多態,而多態的實現不一定需要依賴於介面
舉個例子,多態肯定知道,一般有三種,介面的多態,類的多態,方法的多態
方法的多態就類似於我們方法的重載,這里不贅述
類的多態無非就是子類繼承父類,並重寫父類的方法,從而獲得不同的實現
那麼再來看介面,介面跟類基本是一樣,實現介面並實現介面的方法。。不同的類實現介面可以有不同的方式從而表現不同的行為,就是介面的多態性啊。
F. JAVA中簡述介面如何實現多態
介面裡面 方法重載
就是方法名相同,參數(個數或類型)不同 如
public interface A
{
public String functionA();
public String functionA(Integer a);
public String functionA(char a,String b,Integer c);
}
G. Java中 介面是如何實現多態的特性的
概念
Java中多態是個很難理解的概念,但同時又是非常重要的概念,
Java三大特性(封裝、繼承、多態)之一,
我們從字面上理解,就是一種類型的多種狀態,
一下通過賣小汽車的例子再次說明什麼是多態,其中利用到了介面。
案例
//汽車介面
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());
}
結果:
H. java怎麼用介面實現多態啊 急求
public boolean graate(CanObtainCredit coc){
if(coc.obtainCredit()) return true;
else return false;
}
這就是多態了。
多態實際上就是介面的不同實現。
I. Java中介面、介面的實現和多態的問題
沒錯,這就是多態。介面實現的多態,意味著介面UserService負責定義方法的名字,形參列表和返回值,而不考慮其具體實現,調用方UserBlh也不必了解findUser,saveOrUpdate這兩方法由誰來實現,只需知道這userService指針指向的對象已經實現了這兩個方法,那麼調用方UserBlh只管調用就好。
「調用的是介面UserService中對應的方法,還是調用的是介面的實現UserServiceImpl中對應的方法」看來你可能不太清楚在實現層(語言編譯的技術)上如何做的。
具體來說,1.方法實際上就是一段可執行的代碼。而介面UserService其實就是定義了一個數據結構(其實就是虛函數表),而不定義方法本身(就是介面沒有定義可執行的代碼塊)
2.介面UserService的子類UserServiceImpl在構造函數里要往這個表填一些東西,這個東西就是子類UserServiceImpl所定義的可執行代碼塊的入口地址。
3.當調用方UserBlh調用findUser方法,則通過查虛函數表的方式找到那個findUser方法的地址,進行調用。
給張圖幫助說明從技術的角度如何實現多態。(假設還有一個類B也實現了介面UserService)
J. 關於java實現介面中蘊含的多態問題,請誰詳細說下。
多態就是指同一個介面可以被多個對象實現繼承。
就像中國有句古話,龍生九子各有不同是一個道理,爸爸一樣,但是兒子還是有區別的。
2個對象同時實現了同一個介面,不表示2個對象會把介面里所有的方法都重寫。
比如介面有2個方法,一個是fly(),另一個是run();但是你如果用bird實現這介面,那你就只能實現fly方法,如果是tiger實現介面,那你實現run方法就可以。如果是既可以飛又可以跑,那你2個方法都實現。
具體要怎麼實現多態,得看你對象的需求了。