【超经典】Java多态有什么好处?怎样用?
生活随笔
收集整理的這篇文章主要介紹了
【超经典】Java多态有什么好处?怎样用?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
多態(tài)可以分為變量的多態(tài),方法的多態(tài),類的多態(tài).我這里強調(diào)的是類的多態(tài),這是在以后的工作中經(jīng)常會用到的。多態(tài)的表現(xiàn)形式有方法重載,方法改寫,多態(tài)變量和泛型。重載是一種靜態(tài)的多態(tài)性,在程序編譯時確定被調(diào)用的方法,稱為早綁定。而多態(tài)變量和改寫相結(jié)合之后,方法的調(diào)用在運行時才能確定,是動態(tài)的多態(tài)性,稱為晚綁定。
首先,有這樣一個系統(tǒng):有個學(xué)生從蘭理工畢業(yè)了,做得還不錯.買了輛捷達(dá)汽車.這個系統(tǒng)應(yīng)該如何設(shè)計呢? 按照面向?qū)ο蟮乃枷?我們會抽象出來一個類,表示捷達(dá)汽車,其中有個run()方法 public class JD{public void run(){System.out.println("JD在以120邁的速度在run");} }我們還會抽象出一個類,來代表人.其中有個drive()方法,需要一個汽車類型作為參數(shù),我們先傳入一個JD類型的參數(shù)
// <strong><span style="color:#ff0000;">這是我們的核心業(yè)務(wù)類</span></strong> public class Person{public void <span style="color:#ff0000;">drive(JD jd)</span>{ <span style="color:#ff0000;">//寫死了類型,修改麻煩</span>jd.run();}public static void main(String args[]){Person p =new Person();JD jd = new JD();<span style="color:#ff0000;"> p.drive(jd); //只能傳入JD類型 </span> } } 如果你寫出這樣的代碼的話,恭喜你! 你完蛋了-------------項目經(jīng)理會有砍死你的沖動!!!!!!! 項目經(jīng)理為什么會砍你呢? ---------因為你寫的代碼偶合性太強了! ? 如果我們的需求變了,這個學(xué)生后來更有錢了,買了一兩Benz.那么我們以前的系統(tǒng)怎么辦啊.不要指望你作的系統(tǒng)永遠(yuǎn)不會變化,我們的系統(tǒng)只能修改!這就是項目經(jīng)理砍你的原因 我們的系統(tǒng)會增加一個Benz類,也有個run()方法 public class Benz{public void run(){System.out.println("Benz在以200邁的速度在run");} }我們的核心業(yè)務(wù)類也要修改
public class Person{/* public void drive(JD jd){jd.run(); } */public void drive(Benz b){b.run(); }public static void main(String args[]){Person p =new Person();Benz b = new Benz();p.drive(b); } }以后的情況,我們可以把車抽象出來:(體現(xiàn)多態(tài)的好處) public abstract class Driver{/*屬性*/public void run();//讓子類來運行 }public Benz extends Driver{public void run(){ System.out.println("Benz在以200邁的速度在run");} }public JD extends Driver{public void run(){System.out.println("JD is running...");} }public class Person{ private Driver driver; public Person(){} public Person(Driver driver){this.driver = driver; } public void drive(){driver.run(); } public void setDriver(Driver driver){ //運用參數(shù)多態(tài),以后方便修改車型this.driver = driver; } public static void main(String args[]){Person p =new Person();JD jd = new JD(); //剛開始沒錢就買輛JD吧p.setDriver(jd);p.drive();Benz benz = new Benz{();//有錢換車了p.setDriver(benz);p.drive(); } }哈哈,童靴們仔細(xì)體會一下多態(tài)的好處吧!!!
總結(jié)
以上是生活随笔為你收集整理的【超经典】Java多态有什么好处?怎样用?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为性格面试的破解方法
- 下一篇: 【小米校招笔试】给定一些线段,线段有起点