java多態(tài)注意項(xiàng)小結(jié)
展示多態(tài)現(xiàn)象
package test; //父類引用,指向(不同子類)的實(shí)例,對(duì)同一個(gè)實(shí)例方法名調(diào)用,調(diào)用的程序不 //一樣。繼承是多態(tài)得以實(shí)現(xiàn)的基礎(chǔ)。 public interface test1 { void shout(); }
package test; public class test2 implements test1 { public void shout() { System.out.println("1111"); } }
package test; public class test3 implements test1 { public void shout() { System.out.println("222222"); } }
package test; public class test4 { public static void main(String[] args) { test1 ts = new test2(); ts.shout(); test1 ts1 = new test3(); ts1.shout(); } }
多態(tài)的基礎(chǔ)以及限制
package test; public class test5 { public static void speak() { System.out.println("speak:"); } }
package test; public class test6 extends test5{ public static void speak() { System.out.println("11111"); } //多態(tài)的基礎(chǔ)是繼承和重寫 //多態(tài)僅限于實(shí)例方法 public static void main(String[] args) { test5 ts1 = new test5(); test6 ts = new test6(); ts1.speak(); ts.speak(); } }
對(duì)象類型轉(zhuǎn)換
package test; public class test7 { public void speak(){ System.out.println("speak:"); } }
package test; public class test8 extends test7{ @Override public void speak() { System.out.println("1111"); } }
package test; public class test9 extends test7 { @Override public void speak() { System.out.println("22222"); } protected void action() { System.out.println("敲代碼"); } }
package test; public class test10 { public static void main(String[] args) { //向上類型轉(zhuǎn)換 隱式 安全 //將test8的對(duì)象當(dāng)作test7類型來用 test7 ts = new test8(); ts.speak(); //強(qiáng)制類型轉(zhuǎn)換 顯示 不安全 test7 ts1 = new test9(); test9 ts2 = (test9) ts1; ts2.speak(); //怎么避免強(qiáng)制類型轉(zhuǎn)換帶來的不安全 面向接口編程加instanceof test7 ts3 = new test8(); test7 ts4 = null; if (ts3 instanceof test9) { ts4 = (test9) ts3; } if (ts3 instanceof test8) { ts4 = (test8) ts3; } ts4.speak(); } }
object類
Object類的常用方法也可以被重寫
package test; public class test11 { public void speak(){ System.out.println("speak:"); } }
package test; public class test12 { public static void main(String[] args) { test11 ts = new test11(); ts.speak(); //返回該對(duì)象的字符串表示 System.out.println(ts.toString()); //返回該對(duì)象的哈希碼值 System.out.println(ts.hashCode()); } }
匿名內(nèi)部類
package test; public interface test13 { void speak(); }
package test; public class test14 { //類里面定義的類稱之為內(nèi)部類(Inner Class),內(nèi)部類是外部類的一個(gè)成員。 //Java內(nèi)部類可以分為:成員內(nèi)部類、方法內(nèi)部類和匿名內(nèi)部類等。 class person implements test13{ @Override public void speak() { System.out.println("111111"); } } public static void main(String[] args) { class person1 implements test13{ @Override public void speak() { System.out.println("2222222222"); } } // 可以使用匿名內(nèi)部類來實(shí)現(xiàn)接口。所謂匿名內(nèi)部類就是沒有名字的內(nèi)部類,表面上看 // 起來它似乎有名字,實(shí)際那不是它的名字。當(dāng)程序中使用匿名內(nèi)部類時(shí),在定義匿名 // 內(nèi)部類的地方往往直接創(chuàng)建該類的一個(gè)對(duì)象。 new test13(){ @Override public void speak() { System.out.println("3333333"); } }.speak(); } }
到此這篇關(guān)于java多態(tài)注意項(xiàng)總結(jié)的文章就介紹到這了,更多相關(guān)java多態(tài)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring cloud 的監(jiān)控turbine-rabbitmq的示例
這篇文章主要介紹了spring cloud 的監(jiān)控turbine-rabbitmq的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05Java Lambda表達(dá)式與匿名內(nèi)部類的聯(lián)系和區(qū)別實(shí)例分析
這篇文章主要介紹了Java Lambda表達(dá)式與匿名內(nèi)部類的聯(lián)系和區(qū)別,結(jié)合實(shí)例形式分析了Java Lambda表達(dá)式與匿名內(nèi)部類功能、用法、區(qū)別及操作注意事項(xiàng),需要的朋友可以參考下2019-10-10Java實(shí)現(xiàn)短信驗(yàn)證碼和國際短信群發(fā)功能的示例
本篇文章主要介紹了Java實(shí)現(xiàn)短信驗(yàn)證碼和國際短信群發(fā)功能的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02JAVA實(shí)現(xiàn)的CrazyArcade泡泡堂游戲
CrazyArcade泡泡堂游戲,一款用Java編寫的JavaSwing游戲程序。 使用了MVC模式,分離了模型、視圖和控制器,使得項(xiàng)目結(jié)構(gòu)清晰易于擴(kuò)展,使用配置文件來設(shè)置游戲基本配置,擴(kuò)展地圖人物道具等。同時(shí),該程序編寫期間用了單例模式、工廠模式、模板模式等設(shè)計(jì)模式。2021-04-04Mybatis-Plus中updateById方法不能更新空值問題解決
本文主要介紹了Mybatis-Plus中updateById方法不能更新空值問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08spring cloud alibaba Nacos 注冊(cè)中心搭建過程詳解
這篇文章主要介紹了spring cloud alibaba Nacos 注冊(cè)中心搭建過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析
這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer的底層原理及源碼解析,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進(jìn)步早日升職加薪2022-03-03