1.instanceof 语句
**公式:System.out.println(X instanceof Y);这类语句能否编译通过取决于X与Y是否存在父子关系,如果X与Y存在父子关系(或者如果X指向的子类型和Y有关系),那么可以编译,且结果为true,如果不存在父子关系,那么无法编译,且编译结果为false。
这里我们举例说明,这里有Person类,Student类,Teacher类和Applicant,其中Student和Teacher类继承了Person类,因此,我们可以知道这里的等级关系为:
1.Object > Person > Student
2.Object > Person > Teacher
3.Object > String
1.第一次我们先返回一个Object类,这里Student指向的就是Object类
结果为
Teacher是Person下的另一条线,与Student无关,因此为false。而String为Object下的另一条单独的线,与Student更没有关系了
2.如果我们将Object换为Person,等级降低的话,
因为Person与String同级,都是Object下,所以无法编译与比较。
3.如果将Person换成Student的话,
这里报错是因为student和teacher类之间没有联系,并且Student与Teacher是在Person类下平级的,因此无法比较。