java中多态,instanceof关键字
生活随笔
收集整理的這篇文章主要介紹了
java中多态,instanceof关键字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多態:
面向對象三大特征:繼承、封裝、多態,其中多態指的是有多種形態,可以使代碼更加靈活,而非狀態。繼承或接口是多態的前提,比如一個對象狗是寵物類的實現類對象,而寵物類又繼承了動物類,狗同時具有多種形態:寵物,動物等。
public class Multiplestate{public static void main(String[] args){// 1:代碼中體現多態性:左邊父類引用指向右邊子類對象,其多態格式:父類名稱 對象名 = new 子類名稱();或 接口名稱 對象名 = new 實現類名稱();Fatherclass multiplestateObj = new Sonclass();//左邊父類Fatherclass的引用指向右邊子類對象multiplestateObj.method();//子類中的方法執行了// 5:通過子類創建的對象訪問父類中的特有方法:multiplestateObj.methodOfFatherClass();//父類中的特有方法執行了,當子類中沒有該方法時,會向父類查找該方法System.out.println(multiplestateObj.num);//5,訪問成員變量時,如果父類和子類中成員變量同名,在實現類中訪問同名的成員變量,創建對象時等號左邊是誰,就會訪問誰的值} }; // 2.定義一個父類Fatherclass,并在里面定義一個方法method: public class Fatherclass{public void method(){System.out.println("父類中的方法執行了");}// 4.定義一個父類特有的方法:methodOfFatherClass:public void methodOfFatherClass(){System.out.println("父類中的特有方法執行了");};int num = 5; } // 3:定義一個子類Son,并繼承父類Fatherclass,且覆蓋重寫父類中的方法: public class Sonclass extends Fatherclass{@Overridepublic void method(){System.out.println("子類中的方法執行了");}int num = 10; }對象的向上轉型:起始其實就是多態的寫法,其格式:父類名稱 對象名 = new 子類名稱();其含義:右邊創建一個子類對象,把它當做父類看待使用。注意:一定是小范圍向大范圍轉型,且是安全的,但是,對象一旦向上轉型后,就不能調用子類中特有的方法了,如果想要使用子類中特有的方法,那么就要使用對象的向下轉型進行還原;
對象的向下轉型:對象的向下轉型實際是對象的還原動作,其含義:將父類對象還原成本來的子類對象;其格式:子類名稱 對象名 = (子類名稱) 父類對象名稱;一個父類對象下面可能會有多個子類對象,此時還原的時候不能還原為其它子類對象,否則會報錯,一定要還原為原有的子類。
// 1.創建一個抽象父類:FatherClass: public abstract class FatherClass{public abstract void method(); } // 2.創建一個子類:SonClass: public class SonClass extends FatherClass{// 覆蓋重寫父類中method方法:@Overridepublic void method(){System.out.println("子類中和父類中同名的重寫方法執行了");}// 定義一個獨有的方法:public void method2(){System.out.println("子類中獨有的方法執行了");} } // 5.創建另一個子類:SonOtherClass: public class SonOtherClass extends FatherClass{// 覆蓋重寫父類中method方法:@Overridepublic void method(){System.out.println("子類中和父類中同名的重寫方法執行了");}// 定義一個獨有的方法:public void method3(){System.out.println("另一個子類中獨有的方法執行了");} } // 3.定義一個UseObj類來測試對象的向上轉型: public class UseObj{public static void main(String[] args){// 對象向上轉型:FatherClass objup = new SonClass();objup.method();//子類中方法執行了// objup.method2();//報錯,對象一旦向上轉型后,就不能調用子類中特有的方法了。// 4.向下轉型還原:SonClass objdown = (SonClass) objup;objdown.method2();//子類中獨有的方法執行了,此時調用子類中獨有方法就不會報錯了// 6.錯誤的向下轉型(類似數據的強制轉換中精度損失):SonOtherClass objerrordown = (SonOtherClass) objup;//正常編譯,運行有異常:Exception in thread "main" java.lang.ClassCastException: SonClass cannot be cast to SonOtherClass at UseObj.main(UseObj.java:15)objerrordown.method3();} }instanceof關鍵字:此關鍵字用來判斷一個對象是否屬于某類,返回一個布爾值;其格式為:對象 instanceof 類名稱;
提示:本文圖片等素材來源于網絡,若有侵權,請發郵件至郵箱:810665436@qq.com聯系筆者刪除。
筆者:苦海
總結
以上是生活随笔為你收集整理的java中多态,instanceof关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript中内置对象简介、Ar
- 下一篇: 秒懂物理计算机出题规划,57张动图, 让