您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)java多態(tài)注意項(xiàng)有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
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(); } }
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(); } }
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(); } }
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()); } }
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)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。