http://blog.csdn.net/yanjun_1982/archive/2005/09/02/470405.aspx

重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。

覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。

隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了。隐藏与另外两个概念表面上看来很像,很难区分,其实他们的关键区别就是在多态的实现上。什么叫多态?简单地说就是一个接口,多种实现吧。

转自:http://www.weixueyuan.net/view/5999.html

重载Overrides:

在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返回值类型、参数列表。

如果在新类中定义一个方法,其名称、返回值类型和参数列表正好与父类中的相同,那么,新方法被称做覆盖旧方法。

参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。

被覆盖的方法在子类中只能通过super调用。

注意:覆盖不会删除父类中的方法,而是对子类的实例隐藏,暂时不使用。

public class Demo{public static void main(String[] args) {Dog myDog = new Dog("花花");myDog.say();  // 子类的实例调用子类中的方法
       Animal myAnmial = new Animal("贝贝");myAnmial.say();  // 父类的实例调用父类中的方法
    }
}
class Animal{String name;public Animal(String name){this.name = name;}public void say(){System.out.println("我是一只小动物,我的名字叫" + name + ",我会发出叫声");}
}
class Dog extends Animal{// 构造方法不能被继承,通过super()调用public Dog(String name){super(name);}// 覆盖say() 方法public void say(){System.out.println("我是一只小狗,我的名字叫" + name + ",我会发出汪汪的叫声");}
}

运行结果:
我是一只小狗,我的名字叫花花,我会发出汪汪的叫声
我是一只小动物,我的名字叫贝贝,我会发出叫声

方法覆盖的原则:

  • 覆盖方法的返回类型、方法名称、参数列表必须与原方法的相同。
  • 覆盖方法不能比原方法访问性差(即访问权限不允许缩小)。
  • 覆盖方法不能比原方法抛出更多的异常。
  • 被覆盖的方法不能是final类型,因为final修饰的方法是无法覆盖的。
  • 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
  • 被覆盖的方法不能为static。如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误;反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。

方法的重载overloading:

在Java中,同一个类中的多个方法可以有相同的名字只要它们的参数列表不同就可以,这被称为方法重载(method overloading)。

参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。

重载是面向对象的一个基本特性。

public class Demo{// 一个普通的方法,不带参数void test(){System.out.println("No parameters");}// 重载上面的方法,并且带了一个整型参数void test(int a){System.out.println("a: " + a);}// 重载上面的方法,并且带了两个参数void test(int a,int b){System.out.println("a and b: " + a + " " + b);}// 重载上面的方法,并且带了一个双精度参数double test(double a){System.out.println("double a: " + a);return a*a;}public static void main(String args[]){Demo obj= new Demo();obj.test();obj.test(2);obj.test(2,3);obj.test(2.0);}
}

转载于:https://www.cnblogs.com/limingxian537423/p/6920884.html

重载(overload)、覆盖(override)、隐藏(hide)的区别相关推荐

  1. C++多态及重载(overload),覆盖(override),隐藏(hide)的区别

    转自 Hackbuteer1 http://blog.csdn.net/hackbuteer1/article/details/7475622 C++编程语言是一款应用广泛,支持多种程序设计的计算机编 ...

  2. 谈谈C++继承中的重载,覆盖和隐藏

    写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide).在早期的C++书籍中,可能 翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的 ...

  3. C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载

    C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载 using System; using System.Collections.Generic; using Sys ...

  4. c++成员函数的重载、覆盖、隐藏区别

    c++成员函数的重载.覆盖.隐藏区别 成员函数的重载.覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防. 重载与覆盖 成员函数被重载的特征: (1)相同的范围 ...

  5. 【转】c++重载、覆盖、隐藏——理不清的区别

    原文网址:http://blog.sina.com.cn/s/blog_492d601f0100jqqm.html 再次把林锐博士的<高质量c++编程指南>翻出来看的时候,再一次的觉得这是 ...

  6. C++成员函数重载、覆盖和隐藏的区别

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  7. 《C++成员函数重载、覆盖与隐藏》

    <成员函数的重载.覆盖与隐藏> ------------------------------------------------------------------------------ ...

  8. 【原创】Performanced C++ 经验规则 第五条:再谈重载、覆盖和隐藏

    第五条:再谈重载.覆盖和隐藏 在C++中,无论在类作用域内还是外,两个(或多个)同名的函数,可能且仅可能是以下三种关系:重载(Overload).覆盖(Override)和隐藏(Hide),因为同名, ...

  9. 成员函数的重载、覆盖与隐藏(详细)【转】

    (转自:https://blog.csdn.net/weixin_42205987/article/details/81569744) 成员函数的重载.覆盖与隐藏 成员函数的重载(overload). ...

  10. C++父类与子类关系以及函数重载、覆盖和隐藏规则 http://blog.csdn.net/xingyu19871124/article/details/7640131

    http://blog.csdn.net/xingyu19871124/article/details/7640131 C++父类与子类关系以及函数重载.覆盖和隐藏规则 标签: c++class语言编 ...

最新文章

  1. 储存外部资源的Android项目子目录,Android资源使用
  2. 插件式程序开发及其应用(C#)
  3. mysql常用函数 [转]
  4. CompletableFuture详解~创建实例
  5. android serviceconnection unbind流程,Android unbindService 流程分析
  6. SpringCloud 从菜鸟到大牛之六 消息和异步 MQ
  7. 让老IE支持CSS3响应式布局
  8. 严格单调递增与非严格之间的转换
  9. 腾讯智慧金融白皮书:区块链将是未来数字经济基础设施
  10. 《Mahout算法解析与案例实战》一一2.3 测试安装
  11. lrzsz离线安装方法
  12. MFC采用定时器绘制简单动画
  13. GRC: 个人信息保护法, 个人隐私, 企业风险合规治理
  14. 有限公司清算组成员怎样构成
  15. 7z001怎么解压在安卓手机上面_安卓手机时间怎么显示在中间 时间居中设置教程...
  16. 【BeetSQL入门学习】
  17. oracle客户端12560,windows下 sqlplus / as sysdba 报ora-12560的终极解决方法
  18. C++后端开发知识点总结
  19. 加速代理游戏,让指定进程走代理网络,驱动级SOCKS5代理使用方法。
  20. SQL语句统计排行前10

热门文章

  1. GBDT和XGBoost
  2. Mean Shift算法(3)在OpenCV上的实现——图像分割PyrMeanShiftFiltering
  3. mysql表空间名字查询_数据库表空间信息查询
  4. detected idea启动 web_IDEA使用Tomcat服务器出现乱码问题排查过程
  5. ai怎么渐变颜色_AI教程!渐变色噪点质感城堡场景插画绘制过程分享
  6. js 的prototype 属性和用法,外加__proto__
  7. 2018-2019-1 20165234 《信息安全系统设计基础》第八周学习总结
  8. Druid学习之路 (二)Druid架构
  9. NYOJ 745 dp
  10. LiveCoding