Java | 协变返回类型学习时的一个例子

来源:互联网 发布:淘宝上回收电脑靠谱吗 编辑:程序博客网 时间:2024/06/05 12:07
class Grain{public String toString(){return "Grain";}}class Wheat extends Grain{public String toString(){return "Wheat";}}//publicclass Mill{public Grain process(){System.out.println("Grain process()");return new Grain();}public void say(String s){System.out.println("Mill say:"+s);}}class WheatMill extends Mill{//子类覆盖父类的方法,在jdk1.5后,参数返回类可以是父类方法返回类的子类public Wheat process(){System.out.println("WheatMill-Wheat process()");return new Wheat();}//子类覆盖父类的方法,必须有同样的参数返回类型,否则编译不能通过public String say(String s){System.out.println("WheatMill say:"+s);return s;}//这是对继承的Grain process方法的重写public Grain process(String s){System.out.println(s);return new Grain();}//error:不构成错误,参数一致/*public Grain process(){System.out.println("WheatMill-Grain process()");return new Grain();}*/}public class CovariantReturn{public static void main(String[] args){Mill m;//父类引用Grain g;//父类引用m = new Mill();//父类对象g = m.process();System.out.println(g);m = new WheatMill();//子类对象g = m.process();System.out.println(g);//g=m.process("you");  error父类引用无法调用}}

原创粉丝点击