协变式返回值 没听说过吧!这又是Java5中新增的功能。其实协变式返回值很容易,并没有你想的那么复杂,3分钟绝对能搞清楚
下面的例子
class Base{
public Base method(){
return new Base();
}
}
public class Extended extends Base{
public Extended method(){
return new Extended();
}
}
请注意,在java1.4版本此段代码不会编译通过
会提示: sttempting to use incompatible return type
说明一下,类Extended继承Base类并且重写了超类的method方法,注意一下返回值。
根据重写的原则
重写方法参数应与超类相同
重写方法返回值应与超类相同
重写方法不能抛出在超类声明的更加宽泛的检验异常
重写方法不能使用比超类更广泛的访问限定符
......
显然违反了第2条,是不合理的,不过呢这样写一点错也没有,因为Extended也是Base(Extended IS-A Base原则)所以在向上的继承树转换时会隐式完成。
只要新的返回值类型是被重写的超类方法所声明的返回值的子类,就允许更改返回值类型,这样的返回值就称为协变式返回值啦!
分享到:
相关推荐
这份“java基础——————试题库”资源旨在帮助学习者系统地复习和深入理解Java的基础知识,确保他们能够全方位地掌握这一强大的编程工具。下面将详细阐述Java的基础知识点。 1. **Java简介** - Java是由Sun ...
在Java编程语言中,"可变(协变)返回类型"是一个重要的概念,它涉及到泛型和类型安全。本文将深入探讨这个主题,并结合提供的`Test.java`文件,来理解如何在实际编程中应用协变返回类型。 首先,我们要明白什么是...
Java 8 函数式编程是指在 Java 8 中引入的一种新的编程范式,它强加了额外的约束,即所有数据必须是不可变的,设置一次,永不改变。函数式编程将值传递给函数,该函数然后生成新值但从不修改自身外部的任何东西,不...
在Java编程语言中,形参(形式参数)和返回值是方法的重要组成部分,它们定义了方法的行为和交互方式。在这个“java 形参和返回值练习”中,我们可以通过分析提供的文件来深入理解这两个概念。 首先,让我们看下`...
此外,`main`方法是每个Java程序的入口点,它接收`String[] args`参数,通常用于命令行输入。`Scanner`类用于读取用户输入,如`sc.nextInt()`和`sc.next()`,它们分别用于读取整数和字符串。 在实际编程中,灵活...
在IT行业中,Spring框架是Java企业级应用开发的首选,其AOP(面向切面编程)模块更是提供了强大的功能,让我们能够实现灵活的代码逻辑控制。本篇文章将深入探讨Spring AOP中的“AfterReturning”通知类型,即如何在...
《JAVA入门到精通——30天学通JAVA》是一本专为初学者设计的Java编程教程,旨在帮助读者在短短的30天内快速掌握Java编程基础,从而踏入编程世界的大门。Java作为一种广泛应用于互联网、移动应用、企业级开发等领域的...
Java编程思想中的“Operators”部分主要讲解了Java中的运算符以及如何使用内置文档(javadoc)来维护代码的注释。以下是对这些知识点的详细解释: 1. **内置文档(javadoc)**: - 为何需要:javadoc是为了方便...
根据提供的信息,“Java语言程序设计——基础篇”这本书主要针对初学者介绍了Java编程的基础知识。虽然部分内容并未给出具体章节或细节信息,但基于书名、描述及常见的Java基础教程内容,我们可以推测书中涵盖的主要...
方法(2)-有返回值的方法定义 方法—有返回值方法定义 本讲主题 能够正确确定方法的返回值类型; 能够正确书写return表达式语句; 编写一个计算n!的方法。 (n!= 1*2*3*…*n) public static long fact(int n) { long ...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
根据提供的文档信息,本文将对Java中的方法、内存结构及方法重载等核心概念进行深入解析。 ### 一、方法(Method) #### 1. 什么是方法 方法是Java编程语言中用于封装特定功能的代码块。它允许程序员将程序划分为...
2. 使用addJavascriptInterface()方法建立Java和JavaScript之间的通信桥梁。 3. 在Java类中定义接收JavaScript回调的方法。 4. 在JavaScript代码中通过接口名字调用Java方法并传回数据。 5. 加载HTML内容至WebView,...
根据给定文件的信息,我们可以提炼出以下几个核心知识点: ### 一、对象的创建与使用 #### 1. 创建对象的基本概念 - 在Java中,**创建对象**是使用类的模板来实例化一个具体的实例的过程。 - **创建对象**通常通过...
%% 求复杂网络中两节点的距离以及平均路径长度 %% 求解算法:首先利用Floyd算法求解出任意两节点的距离,再求距离...% D————————返回值:网络图的距离矩阵 % aver_D———————返回值:网络图的平均路径长度
在本案例中,"java返回值封装.zip" 提供了一套基于RESTful规范的接口返回值封装方案,旨在简化Java后端开发中的接口设计工作,提高与APP或其他客户端的对接效率。 REST(Representational State Transfer,表述性...
本文主要介绍了一个强大的Java字节码处理类库——Javaassist。 Javaassist是一个开源库,允许开发者在运行时动态地修改或者创建Java类。它提供了一种简洁的API,使得程序员无需深入了解字节码的细节就能实现复杂的...
本教程将重点关注其中的一个重要特性——协变返回类型,从IL(Intermediate Language)层面进行深入剖析。IL是.NET Framework中的中间语言,是源代码编译后的产物,用于跨平台执行。了解IL有助于我们理解.NET框架的...