`
betafox
  • 浏览: 147424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于重载和覆盖的有趣现象

 
阅读更多

 

重载:在java中overload要遵循两个原则:准确性和唯一性,两个重载方法参数数量相同,但是参数列表是父子关系时,优先匹配最准确的类型;只有参数不同才能构成重载,"可见度",返回类型不同都不能构成方法的重载;

 

覆盖:类继承时可以在子类中重新实现父类中的方法功能,函数名相同、参数类型必须精确匹配、可见度不能降低、异常和返回值类型必须向上兼容(可以是父类中的子类)

 

java语言这样的规范是非常合适的,有效屏蔽了方法匹配的复杂性,但是可以看出其限制了寻址的灵活性,下面的三个方法中如果第二个也能允许为[覆盖],寻址时根据参数精确匹配到方法,精确匹配不到...

 

my god :语言规范是个很恐怖的董董,怀疑研究下去会精神分裂。。。。

 

   @Override
    public QuadristateButtonModel getModel() {
        return (QuadristateButtonModel) super.getModel();
    }

    public void setModel(QuadristateButtonModel model) {
        super.setModel(model);
    }

    @Override @Deprecated
    public void setModel(ButtonModel model) {

        // if (!(model instanceof TristateButtonModel))
        // useless: Java always calls the most specific method
        super.setModel(model);
    }

 

分享到:
评论

相关推荐

    C++函数的重载和覆盖

    在C++编程语言中,函数的重载(Overloading)和覆盖(Overriding)是两个重要的概念,它们分别涉及到同一作用域内的多态性和继承体系中的多态性。本篇文档将深入探讨这两个主题,帮助你更好地理解和运用它们。 ### ...

    函数重载和覆盖的区别.doc

    ### 函数重载和覆盖的区别 #### 一、引言 在编程领域,函数重载(Overloading)和覆盖(Overriding)是两种常见的多态性实现方式,它们允许程序员在代码中创建更加灵活和复用性强的功能。尽管两者名称相似,但它们...

    java中函数重载与覆盖例子

    在Java编程语言中,函数重载(Overloading)和覆盖(Overriding)是面向对象特性的重要组成部分,它们分别处理多态性中的静态多态和动态多态。本篇将通过一个具体的例子,深入探讨这两个概念。 函数重载是指在同一...

    Java 中方法的重载与覆盖

    ### Java中的方法重载(Overloading)与方法覆盖(Overriding) #### 方法的重载(Overloading) ...总结来说,在Java中正确理解和应用方法重载和方法覆盖是非常重要的,这有助于编写更加灵活和高效的代码。

    c++ 重载、覆盖、重写

    通过以上的介绍,我们可以看到,虽然重载、重写(覆盖)和隐藏都涉及到函数的同名问题,但它们的含义和应用场景却完全不同。理解这些概念可以帮助我们在实际开发过程中更加灵活地运用这些特性,避免一些潜在的问题。

    重载、覆盖和隐藏

    ### 重载、覆盖和隐藏:面向对象编程中的三大概念 在面向对象编程中,类成员函数的重载(Overloading)、覆盖(Overriding)和隐藏(Hiding)是三个非常重要的概念,它们帮助程序员更好地管理和扩展代码。下面将...

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...

    JAVA的重载和覆盖(论文)

    JAVA中的重载(Overload)和覆盖(Override)是面向对象编程中两个核心概念,尤其在多态性的体现上扮演着重要角色。这两者虽然在名称上相似,但在实际应用和概念理解上有着本质的区别。 ### 重载(Overload) 重载是在同...

    重载、覆盖、多态与函数隐藏

    在面向对象编程中,重载、覆盖、多态和函数隐藏是几个重要的概念,它们共同作用于类的继承体系中,影响程序的行为和扩展性。下面将详细解释这些概念,并通过C++中的代码示例来加深理解。 首先,函数重载...

    java中的方法重载和覆盖的区别宣贯.pdf

    "Java中的方法重载和覆盖的区别" Java中的方法重载和覆盖是两个常见的概念,但很多开发者容易混淆这两个概念。在Java中,方法重载(Overloading)和方法覆盖(Overriding)都是实现多态性的手段,但它们之间有着...

    C#中的重载与覆盖例子

    ### C#中的重载与覆盖例子 在C#编程语言中,重载(Overload)与覆盖...重载主要关注于方法签名的不同,而覆盖则关注于通过继承和虚方法来实现不同的行为。理解这两者的区别对于编写灵活、可扩展的代码至关重要。

    重载,重写,覆盖,多态

    ### 重载、重写、覆盖与多态的深刻剖析 在面向对象编程语言中,如Java、C#等,重载(Overloading)、重写(Overriding)、覆盖(也称为重写)以及多态(Polymorphism)是几个非常重要的概念。它们之间既有关联又有...

    c#的重载、覆盖、隐藏

    ### C#中的重载(Overloading)、覆盖(Overriding)与隐藏(Hiding) #### 一、概述 在面向对象编程语言C#中,方法的重载(Overloading)、...通过正确应用重载、覆盖和隐藏,可以编写出更加灵活、易于扩展和维护的代码。

    C++成员函数的重载、覆盖与隐藏

    文件详细描述了C++成员函数的重载、覆盖与隐藏技术,对于初学C++的人员很有帮准,也是我们程序猿参考、学习的重要资料。

    delphi动态虚拟覆盖重载重定义的区别

    DELPHI中方法的类型及其覆盖、重载 1、静态方法是方法的缺省类型,对它就像对通常的过程和函数那样调用,编译器知道这些方法的地址,所以调用一个静态方法时它能把运行信息静态地链接进可执行文件,所以,静态方法...

    重载与覆写/重写的区别

    (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。  如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。 (3)子类函数的访问...

    java学习笔记 继承 重载 覆盖

    Java编程语言的学习涉及众多核心概念,本篇笔记主要探讨了几个关键知识点:继承、重载和覆盖。首先,我们从Java环境配置开始,确保能够正确地运行Java程序。在Windows系统中,需要设置环境变量PATH,指向JDK安装目录...

    Java方法继承、方法重载、方法覆盖总结

    ### Java方法继承、方法重载、方法覆盖总结 ...综上所述,方法继承、方法重载和方法覆盖是Java面向对象编程中的三个重要概念。正确理解和运用这些概念能够帮助开发者编写出更加灵活、高效和可维护的代码。

Global site tag (gtag.js) - Google Analytics