interface animal{
    void sayHi();
    String getName();
}class dog implements animal{
    public void sayHi(){
        System.out.println("I am "+getName()+bark());
    }
    public String bark(){
        return "wang-wang";
    }
    public String getName(){
        return "Bob.";
    }
}class bulldog extends dog{
    public String getName(){
        return "Mike.";
    }
    public String bark(){
        return "wow-wow";
    }
}public class test2{
    public static void main(String args[]){
        animal b=new bulldog();
        dog d=(dog)b;  //A
        check(d);
        dog dd=(bulldog)b; //B
        check(dd);
    }
    public static void check(dog d){
        System.out.println("I am "+d.getName());
    }
    public static void check(bulldog d){
        System.out.println("I am "+d.getName());
    }
}
//A和B处怎么理解的阿?B处dog dd=(bulldog)b;是父类dog引用指向子类对象bulldog吗?A处理解成将一只公狗强制转换成一只狗?然后调用check(dog d)方法,d.getName();怎么还是调用公狗的getName()方法?
要晕了啊...