class Ding{
public String toString(){
return "Ding";
}
}
class Grain extends Ding{
public String toString(){
return "Grain";
}
}
class Wheat extends Grain{
public String toString(){
return "Wheat";
}
}
/***********************/
class Mill{
Grain process(){
return new Grain();
}
}
class WheatMill extends Mill{
@Override
Wheat process(){
return new Wheat();
}
}
public class CovariantReturn {
public static void main(String[] args) {
// TODO Auto-generated method stub
Mill mill = new Mill();
Ding g = mill.process();
System.out.println(g.toString());
mill = new WheatMill();
g = mill.process();
System.out.println(g.toString());
}
}
注:WheatMill 类重写了Mill 类的process方法。但是这个重写和我们之前接触的重写又有些不同。仔细看可以发现子类重写父类的方法的返回类型和父类的方法的返回类型是不一样的。但是两个返回类型也存在着关系:即子类方法的返回类型是父类方法返回类型的子类。这里其实就是JDK的新特性了。我们之前关于重写的概念是:子类重写父类的方法,方法名,返回类类型,参数列表都要相同。从JDK5以后就允许子类冲重写父类方法的返回类型可以是父类方法的返回类型的子类了。具体有什么好处,呵呵,说不上来。不过这样更能说明多态了。
分享到:
相关推荐
URL重写URL重写URL重写URL重写URL重写URL重写
URL重写的一个例子,不是自己的东东,有需要的自己下来看看
URL重写URL重写URL重写URL重写URL重写URL重写
一个重写SPI的小例子,希望对大家学习有所帮助
koa重写了one一个api
URL重写URL重写URL重写URL重写URL重写URL重写
最简单的url重写,只有一个方法,不用修改配置文件
jsp的一个url重写 达内郑州中心老师的分享 好东西哦~
C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框
UrlWriter实现url重写的一个实例,刚弄好的,发上来,也给自己挣点分
C# url重写 C# url重写 C# url重写
URL重写DEMOURL重写DEMOURL重写DEMOURL重写DEMO
针对于C语言里面的常用函数的用法和细节进行了归纳整理
Url重写,无后缀Url重写,UrlRewriter.dll
微信小程序 重写App、重写Page 自定义分享
重载:用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。多态:c#的多态性主要体现在类的继承上:子类继承父类的时候,可能出现同名但方法定义不同的情况, 所以在子类中会将原方法...
重写window.alert方法 重写window.alert方法
URL重写实例,无二级重写,URL重写实例,实例代码 vs2008
里面是重写一个单元格,将单元格重写为一个日期控件的代码,可以学习学习。
asp.net c# Url重写和无扩展名Url重写 内有所有源码 注:无扩展名Url重写,必须是虚拟目录的相对路径