zoukankan      html  css  js  c++  java
  • java协变类型返回

    协变类型返回也是覆盖方法的一种,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());


    }
    }

  • 相关阅读:
    MySQL
    MySQL
    MySQL
    javaScript之深度理解原型链
    javaScript之this的五种情况
    ES6之箭头函数中的this
    javaScript之跨浏览器的事件对象
    javaScript之事件处理程序
    javaScript之promise
    VUE之使用百度地图API
  • 原文地址:https://www.cnblogs.com/working/p/5646119.html
Copyright © 2011-2022 走看看