簡體   English   中英

陳述 3 是錯誤的,而陳述 4 是正確的

[英]How statement 3 is false and 4 true

class Vehical{}

public class Car extends Vehical {
    public static void main(String[] args) {

        Vehical v = new Vehical();
        Car c = new Car();

        boolean is =  v instanceof Vehical;
        System.out.println("is v instanceof Vehical class - "+is);

        is = c instanceof Car;
        System.out.println("is c instanceof of Car class - "+is);

        is = v instanceof Car;
        System.out.println("is v instanceof of Car class - "+is);

        is = c instanceof Vehical;
        System.out.println("is c instanceof of Vehical class - "+is);
    }
}
  1. Vehicle不是Car因為它是Car父級。
  2. CarVehicle實現,所以 Car 就是 Vehicle。

您可以在此處閱讀更多信息: https : //www.tutorialspoint.com/What-is-Is-a-relationship-in-Java

由於v是一個(具體的) Vehical (我想你指的車輛)。

但是Vehical的“具體”實例不是Car 它是Vehical的(非特定)實例。 所以v instanceof Carfalse

但是cCar的具體實例,因為CarVehical的子類c也是Vehical因為Car所有實例也是Vehical實例。 所以c instanceof Vehicaltrue因為(在你的模型中)所有的“汽車”也是“汽車”(隱式繼承)。

如果您不希望Vehical實例不是更具體的Vehical類型(例如CarMotorbike ?、 Lorry ?),您可以將Vehical抽象類。 在現實世界中,永遠不會有不是特定類型車輛的車輛。

廢話:你開什么車? 我開車。 什么樣的車輛? 沒有什么特別的,就是一輛車!

推薦的模型是聲明一個名為Vehicalinterface ,並為每個(更多)具體類型的Vehical實現它,因為這種繼承模型可能難以管理。 但你所做的是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM