кто может объяснить, почему такой код не проходит (и выдет анализом что проверка львов и тигров всегда "ложь")
if (o instanceof Cat) {
sss = "Кот";
} else {
if (o instanceof Tiger) {
sss = "Тигр";
} else {
if (o instanceof Lion) {
sss = "Лев";
}
а такой проходит внутреннюю проверку без претензий и при выполнении кода также выдает верный ответ
if (o instanceof Tiger) {
sss = "Тигр";
} else {
if (o instanceof Lion) {
sss = "Лев";
} else {
if (o instanceof Cat) {
sss = "Кот";
}
package com.javarush.task.task12.task1225;
/*
Посетители
*/
public class Solution {
public static void main(String[] args) {
System.out.println(getObjectType(new Cat()));
System.out.println(getObjectType(new Tiger()));
System.out.println(getObjectType(new Lion()));
System.out.println(getObjectType(new Bull()));
System.out.println(getObjectType(new Cow()));
System.out.println(getObjectType(new Animal()));
}
public static String getObjectType(Object o) {
String sss = null;
if (o instanceof Cat) { sss = "Кот";}
if (o instanceof Tiger) { sss = "Тигр";}
if (o instanceof Lion) { sss = "Лев";}
if (o instanceof Bull) { sss = "Бык";}
if (o instanceof Cow) { sss = "Корова";}
if (o instanceof Animal) { sss = "Животное";}
return sss;
}
public static class Cat extends Animal //<--Классы наследуются!!
{
}
public static class Tiger extends Cat {
}
public static class Lion extends Cat {
}
public static class Bull extends Animal {
}
public static class Cow extends Animal {
}
public static class Animal {
}
}