继承和"实例"测试结果

Cha*_*Lee 3 java

我正在研究'instanceof'java,但我无法清楚地理解'instanceof',我认为下面的答案是真的和假的,但结果都是真的.你能解释一下为什么会出现这种结果 据我所知,当A是B(父母)的孩子,B的实例是'假'但结果与我的想法不同.

class Car{
    String color;
    int door;       
}

class FireEngine extends Car{
    void water(){
        System.out.println("water");
    }
}

public class Operator {
    public static void main(String[] args) {
        Car car = new FireEngine();
        FireEngine fireCar = new FireEngine();

        System.out.println(car instanceof FireEngine);
        System.out.println(fireCar instanceof Car);
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*der 7

宣言!=价值

你声明car为汽车,但价值是一个FireEngine.

instanceof基于值工作,而不是基于其变量的声明 !!!

缩短可能有助于理解:

System.out.println(new FireEngine() instanceof FireEngine);  // true
System.out.println(new FireEngine() instanceof Car);         // true
Run Code Online (Sandbox Code Playgroud)