您的位置:首页 > 编程语言 > Java开发

java协变类型返回

2016-07-06 10:46 471 查看
协变类型返回也是覆盖方法的一种,jdk5开始支持的一种:子类覆盖方法返回可以是子类返回的子类,这个比较拗口

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.fengli;

/**
* 粮食类
* @author Administrator
*/
public class Grain {

public String toString(){
return "Grain";
}

}

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.fengli;

/**
* 小麦类
* @author Administrator
*/
public class Wheat extends Grain{
@Override
public String toString(){
return "Wheat";
}

}

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.fengli;

/**
*协变返回
* 子类覆盖方法返回可以是子类返回的子类,这个比较拗口
* @author Administrator
*/
public class CovariantReturnType {

class Mill {

public Grain process() {
return new Grain();
}
}

class WheatMill extends Mill {

@Override
public Wheat process() {
return new Wheat();
}
}

public static void main(String[] args) {
CovariantReturnType c = new CovariantReturnType();
CovariantReturnType.Mill m = c.new Mill();
Grain g = m.process();
System.out.println(g.toString());

CovariantReturnType.Mill wm = c.new WheatMill();
Grain g1 = wm.process();
System.out.println(g1.toString());

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: