1.如圖,Object,Person,Teacher,Student四類的關系已經寫出來了,由于實例化的是Student類,因此,與Student類存在關系的類在使用instanceof時都會輸出True,而無關的都會輸出False,如圖對Student實例化的是Object類,輸出分別為True,True,True,False,False;
2.對于對Student實例化的Person類,由于Person類與String類沒有關系,因此第五行直接報錯,而因為Person類與Teacher類有關,因此編譯通過,但Student類與Teacher類無關,因此輸出為False,因此輸出結果為True,True,True,False
3.總結:System.out.println(x instanceof y);編譯能否通過,看x與y是否有關系,但通過后輸出True或者False則跟x實例化的對象類型是否與y有父子關系,沒有則輸出False,有則輸出True
4.如圖,父類Perosn定義了run方法,子類Student定義了go方法,首先對Student類進行實例化,由于實例化的類型是Student類,因此可直接調用go方法,后者由Person實例化的Student類,因go方法是Student僅有的方法,因此父類Person無法直接調用go方法
5.如上圖所問,因person的類型為Person類,由于Person是父類,類型比Student類高,高類型轉換至低類型需通過強制轉換,如圖所示,轉化為Student類后可調用Student類的go方法輸出go