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()方法?
要晕了啊...
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()方法?
要晕了啊...
是
A处理解成将一只公狗强制转换成一只狗?
是
然后调用check(dog d)方法,d.getName();怎么还是调用公狗的getName()方法?