class inher1
{
public static void main(String...args)
{
eat i = new ursus();
if(i instanceof eat) System.out.println("Instance of eat");
//Line 1
if((omnivora)i instanceof eat) System.out.println("Instance of eat");
//Line 2
if((omnivora)i instanceof omnivora) System.out.println("Instance of omnivora");
if(((omnivora)i).like_honey)System.out.println("Like Honey Obtained");
}
}
interface eat //Interface 1
{
public void eat();
}
interface omnivora //Interface 2
{
final public static boolean like_honey = true;
}
abstract class mammalia implements eat
{
abstract public void makenoise();
public void eat(){System.out.println("Yummy");}
}
class ursus extends mammalia implements omnivora
{
public void makenoise(){System.out.println("Growl");}
}
class felidae extends mammalia
{
public void makenoise(){System.out.println("Roar");}
}
这是我的等级制度
Eat和Omnivora是不相关的接口
Mammalia实施Eat Interface
Ursus扩展了Mammalia实现的Omnivora界面
猫科延伸了哺乳动物
可以看出,omnivora和eat是不相关的接口,但是Line 1和Line 2分别打印出“吃的实例”和“杂食性的实例”.
有人可以告诉我为什么吗?