美文网首页
java协变函数

java协变函数

作者: 抓兔子的猫 | 来源:发表于2016-10-25 10:18 被阅读70次

java 方法名相同,参数列表相同,返回值不同一般会报错,但有一种特殊情况 :
java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类。
协变返回类型允许返回更为具体的类型

class Grain{  
    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{  
    Wheat process(){  
        return new Wheat();  
    }  
}  
public class CovariantReturn {  
    public static void main(String [] args){  
        Mill m = new Mill();  
        Grain g = m.process();  
        System.out.println(m.process());  
           
        m = new WheatMill();  
        System.out.println(m.process());  
   
    }  
}  ```

输出 Grain
       Wheat

相关文章

  • java协变函数

    java 方法名相同,参数列表相同,返回值不同一般会报错,但有一种特殊情况 :java 5.0添加了对协变返回类型...

  • java 不变、协变、逆变

    java 不变、协变、逆变 前言 先说结论,java 的 List 是不变的,java 的 array 是协变的。...

  • 14.从底层实现剖析Kotlin协变与逆变的原理

    1.Java与Kotin的协变对比 Kotlin: 声明处协变; Java:使用处协变。Kotlin中的out关键...

  • JAVA泛型与类型安全

    1. 基础泛型 2. 协变与逆变与不变 协变 简单来说即: Java中的数组是协变的 逆变与协变相对,逆转了类型关...

  • 泛型 - 通配符

    使用通配符的原因:Java中的数组是协变的,但是泛型不支持协变。 数组的协变 首先了解下什么是数组的协变,看下面的...

  • Kotlin 泛型中的 in 和 out

    协变 在 Java 的泛型系统中. 泛型默认是不支持协变(covariant). 也就是说在 Java 中. 即使...

  • Scala 类型系统(1)

    协变逆变引入原因 协变和逆变主要是用来解决参数化类型的泛化问题。我的理解是解决Scala高阶函数参数引入。 定义协...

  • 协变和逆变

    Java的泛型只有通配符?和extends、super,没有语法上的协变和逆变。 什么是协变和逆变? 在混合OO和...

  • Java中的桥接方法与泛型的逆变和协变

    泛型的协变和逆变是什么?对应于Java当中,协变对应的就是,而逆变对应的就是

  • Java 泛型与通配符

    参考地址:《Java 泛型,你了解类型擦除吗?》 《Java中的逆变与协变》 《java 泛型中 T、E .....

网友评论

      本文标题:java协变函数

      本文链接:https://www.haomeiwen.com/subject/uarruttx.html