接上一节golang中接口的面向对象(三)–go实现继承的局限;
我们发现go的多态存在一定的局限性,
那么我们来看看java代码,如下,所示的示例,
class Cow
{
public void printAll()
{
printColor();
printName();
}
public void printColor()
{
System.out.println("我浑身白色");
}
public void printName()
{
System.out.println("我是一头奶牛");
}
}
class Whale extends Cow
{
//在whale类中并没有重写printAll
//在whale类中重写printName
public void printName()
{
System.out.println("我是一条鲸鱼");
}
}
Whale 继承自Cow,我们在main中调用whale.printAll();来看看运行结果;
public static void main(String[] args)
{
Whale whale = new Whale();
whale.printAll();
}
屏幕显示:
我浑身白色
我是一条鲸鱼
我们发现在java中,whale.printAll();会调用到whale.printName();而不是cow.printName(),
在java中,方法被调用时所在的对象的类型(类)决定了这个方法是哪个方法。