`
crud0906
  • 浏览: 136142 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java override 协变返回类型

    博客分类:
  • JAVA
阅读更多
一直没有注意到这问题,今天又看thinking in java时看到了这句话:
JAVA SE5中添加了协变返回类型,它表示在导出类中的被覆盖方法可以返回基类中方法返回值的某种导出类型,用代码表示如下:
public class A {
	public A method() {
		System.out.println("A");
		return null;
	}
}

public class B extends A {
	@Override
	public B method() {
		System.out.println("B");
		return null;
	}

        public static void main(String[] args) {
		A a = new B();
		a.method();
	}
}


B类覆盖了A中的method方法,运行打印出 B
分享到:
评论

相关推荐

    java协变返回类型使用示例

    在Java编程语言中,协变返回类型是一种特性,它允许子类在重写父类方法时,返回一个比父类方法更具体的类型。这在某些情况下可以提高代码的灵活性和可读性。Java 5.0及后续版本开始支持这种协变特性。下面将详细解释...

    java面试题.pdf

    重写(Override)是指子类对父类中的方法进行重新实现,必须保证子类方法与父类方法具有相同的名称、参数列表和返回类型(协变返回类型除外)。重写体现运行时多态,与访问权限和抛出的异常也有关。重载与返回类型...

    深入Java核心 Java中多态的实现机制.docx

    4. 返回类型可以是相同的,或者子类的返回类型可以是父类返回类型的子类型(协变性)。 5. 派生类的方法访问修饰符不能比基类的更严格,即子类的访问权限不能小于父类。 多态的类型可以分为四种,源自Luca Cardelli...

    Java重载.docx

    从Java 7开始,子类方法的返回类型可以是父类返回类型的派生类,这称为协变返回类型。 3. **访问修饰符**:重写方法的访问权限不能低于被重写方法。比如,如果父类方法是`public`,子类重写方法不能声明为`...

    深入Java核心Java中多态的实现机制.pdf

    6. **返回类型**:多态方法的返回类型必须相同,或者返回类型之间存在协变关系(例如,父类类型可以作为子类类型的返回类型)。 7. **访问控制**:派生类的方法访问修饰符不能比基类更严格,这意味着如果基类方法是...

    Java方法的艺术:重载与重写的深度解析

    - **返回类型**:重载可以改变返回类型,重写要求返回类型相同或协变。 - **访问权限**:重写方法不能缩小访问权限。 了解这些区别对于正确使用重载和重写非常重要。在设计类和方法时,应当清楚地区分这两种技术的...

    Java进阶路线

    掌握泛型接口和方法、类型擦除、协变、逆变等概念对于编写高质量的Java代码至关重要。 **7. 反射** 反射允许程序在运行时检查和修改自身结构与行为。这对于框架和库的设计非常有用,但也可能导致安全性问题。 **8...

    JAVA面试题目

    Overloaded方法的返回类型可以不同,但仅限于子类方法的返回类型与父类方法返回类型有协变关系。 9. Final类有什么特点? Final类不能被继承,即不能有子类。Final方法不能被子类重写。 10. 继承时类的执行顺序...

    JAVA面试宝典2013版

    重写的方法不能改变返回值类型,除非是协变返回类型。 19. 构造器(Constructor)不可以被override,因为构造器是创建对象时由系统自动生成调用的,不能在子类中重新定义。 20. 接口可以继承接口,但是一个类不能...

    java经典面试题

    - `List<String>` 不能转换为 `List<Object>`,因为类型参数是不可协变的。 33. **解析 XML 的几种方式**: - DOM:将整个文档加载到内存中。 - SAX:事件驱动模型,逐个解析文档。 - PULL:简化版的 SAX,便于...

    JAVA面试宝典

    Overloaded方法不能改变返回值类型,Override方法可以改变返回值类型,只要满足协变返回类型的要求。 19. 构造器Constructor不能被override,但可以被overload,也就是重载。 20. 接口之间可以相互继承,抽象类...

    SCJP各章要点02

    从Java 5开始,子类的重写方法还可以拥有更具体的返回类型,这种特性被称为协变返回类型。 - **重载(Overload)**:则是在同一个类中,使用相同的方法名但参数列表不同的多个方法。重载方法的访问修饰符、抛出的异常...

    20练习1

    从Java 5.0开始,重写方法的返回值可以是子类类型,这是协变返回类型。构造方法可以被重载,但不能被重写。 关于数据类型传递,Java总是按值传递,但对引用类型而言,实际上是传递了对象的引用地址,基本类型则是...

    jdk1.5.zip 免费分享,哈哈

    8. covariant returns(协变返回类型):在泛型接口中,允许子接口返回更具体的类型。 9. New I/O API(NIO):非阻塞I/O模型,提供了基于通道(Channel)和选择器(Selector)的I/O操作,适用于高并发场景。 10. ...

    玉宝必背锦集之---九阴真经.pdf

    - 重写的方法不能改变返回类型,除非返回类型是协变的。 - 重载的方法可以改变返回类型,但仅仅改变返回类型是不够的,必须同时改变参数列表。 以上知识点是程序员在准备面试时必须掌握的基础概念。掌握这些知识...

    Educoder–Java面向对象-泛型程序设计【笔记+参考代码】

    Java中的泛型是面向对象程序设计的一个重要特性,它允许我们在类、接口和方法中使用类型参数,从而创建可重用的组件,这些组件能够处理多种数据类型而无需显式进行类型转换。泛型的主要目标是提高代码的类型安全性和...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    18.5.1 协变接口 341 18.5.2 逆变接口 343 第18章快速参考 345 第19章 枚举集合 347 19.1 枚举集合中的元素 347 19.1.1 手动实现枚举器 348 19.1.2 实现ienumerable接口 352 19.2 使用迭代器来实现枚举器 354...

Global site tag (gtag.js) - Google Analytics