public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.syaHi();
Animal b = new Bulldog();
b.syaHi();
Dog dog = (Dog)b;
dog.syaHi();
check(dog);
Bulldog bulldog = (Bulldog)b;
check(bulldog);
}
public static void check(Dog dog)
{
System.out.println("check dog"+dog.getName()+".");
}
public static void check(Bulldog bulldog)
{
System.out.println("check bulldog"+bulldog.getName()+".");
}
}
interface Animal
{
void syaHi();
String getName();
}
class Dog implements Animal
{
public String getName()
{
return "Bob";
}
private String bark()
{
return "wang-wang";
}
public void syaHi()
{
System.out.println("I am "+getName()+"."+bark());
}
}
class Bulldog extends Dog
{
@Override
public String getName(){return "Mike";}
private String bark(){return "WOO-WOO";}
}
你就不能自己运行一下嘛?运行了,什么顺序都出来,且不会有错。
I am Bob.wang-wang
I am Mike.wang-wang
I am Mike.wang-wang
check dogMike.
check bulldogMike.
I am Bob.wang-wang
I am Mike.wang-wang
I am Mike.wang-wang
check dogMike.
check bulldogMike.
I am Bob.wang-wang
I am Mike.wang-wang
I am Mike.wang-wang
check dogMike.
check bulldogMike.
我们脑子也不是计算机,自己运行一下不就知道了
I am Bob.wang-wang
I am Mike.wang-wang
I am Mike.wang-wang
check dogMike.
check bulldogMike.