java系列--重载和覆盖小结
继承中属性的隐藏和方法的覆盖
java中规定,子类用于隐藏的变量可以和父类的访问权限不同,如果访问权限被改变,则以子类的权限为准
java中允许子类的变量与父类变量的类型完全不同,以修改后的数据类型为准java允许父类的变量被子类的常量隐藏,也允许父类的常量被子类的变量隐藏
java允许用实例成员变量来隐藏静态成员变量,也允许用静态成员变量来隐藏实例成员变量
覆盖
覆盖必须满足两个条件:1、方法名称必须相同 2、方法的参数必须完全相同,包括参数个数、类型、顺序
1、访问权限不相同的情况:子类方法的访问权限可以与父类不同,但只允许权限更宽松,而不允许更严格
2、返回值数据类型不同的情况:覆盖与被覆盖的方法的返回值数据类型必须完全相同
3、final修饰符不同的情况:
4、静态修饰符不同的情况:不允许出现父类方法和子类方法覆盖时的static修饰符发生变化
构造方法在覆盖时,只能是访问权限不同,只允许访问权限更宽松。java还规定,子类中无论哪个构造方法在执行时,都会先执行父类中无参数的构造方法
super只能在子类中使用,用来调用父类的成员或构造方法
子类的构造方法会自动调用父类不带参数的构造方法,但是不会调用带参数的构造方法。
如果子类确实有必要调用父类带参数的构造方法,就必须使用super关键字来实现
super使用规则:
它只能用在构造方法中,
它只能是第一条执行语句
一个构造方法中只能有一天super语句
java语言支持两种类型的多态性:运行时的多态性,编译时的多态性
多态性体现在两个方面:
方法重载:通常指在同一个类中,相同的方法名对应着不同的方法实现,但是方法的参数不同
成员覆盖:通常指在不同类中允许有相同的变量名,但是数据类型不同;也允许有相同的方法名,但是对应的方法实现不同
普通方法的重载
方法同名时,要求至少下面之一不同:1、参数个数不同 2、对应位置参数类型不同
void overload(int); 1 int overload(int,int); 2 double overload(); 3 int oveload(int); 1、2、3互为重载,但1、4之间不是重载
覆盖和重载的区别 :
重载和覆盖的方法名称都相同,但重载要求参数列表不同,而覆盖则要求参数列表完全相同
重载对于方法前面的修饰符没有限制,而覆盖则对这些修饰符的使用有限制
同一类中的方法能够相互重载,但不能相互覆盖。子类对父类方法既可以重载也可以覆盖
重载时,编译器在编译期间就可以确定调用哪一个方法,而覆盖则有可能在运行期间才能确定
java系列--重载和覆盖小结的更多相关文章
- Java之重载与覆盖
有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式.运行时,J ...
- java的重载、覆盖和隐藏的区别
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- java中重载、覆盖和隐藏三者的区别分析
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- java中重载和覆盖(又称重写)的区别
初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个 ...
- java中方法的重载和覆盖
java中方法的重载和覆盖 先来了解一下这两个名词的含义. 重载: 在一个类当中才可以重载,方法名相同,参数个数不同或参数个数相同而参数类型不同. 覆盖: 又称重写,在派生类(子类)中重写基类(父类) ...
- Java基础知识(重载和覆盖)
重载(overload): 在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了. 即当函数同名时,只看参数列表.和返回值类型没关系. 重 ...
- java中方法的重载和覆盖分别要满足的条件
1.重载:遵循“两同三不同” 两同:同一个类中的同名方法 三不同:形参的类型,个数,顺序不同 特别提醒: 返回值不同构不能方法重载 形参名称不同构不成方法重载 2.覆盖(重写)的要求 子类方法的名称, ...
- Java系列笔记(5) - 线程
我想关注这个系列博客的粉丝们都应该已经发现了,我一定是个懒虫,在这里向大家道歉了.这个系列的博客是在我工作之余写的,经常几天才写一小节,不过本着宁缺毋滥的精神,所有写的东西都是比较精炼的.这篇文章是本 ...
- Java:重载和重写
Java:重载和重写 对 Java 中的 重载和重写 这个概念,做一个微不足道的小小小小结 重载 重载:编译时多态,同一个类中的同名的方法,参数列表不同,与返回值无关. 有以下几点: 方法名必须相同: ...
随机推荐
- Sphinx配置过程
http://www.oschina.net/question/84274_11938 http://www.ibm.com/developerworks/library/os-php-sphinxs ...
- SoftReference 介绍
1 Java中的SoftReference 2 即对象的软引用.如果一个对象具有软引用,内存空间足够,垃 圾回收器就不会回收它:如果内存空间不足了,就会回收这些对象的内存.只要垃圾回收器没有回收它,该 ...
- gen_compile.sql
set echo off pagesize 0 feedback off define v_input_un = &1define v_input_pw = & ...
- 管理Fragments(转)
转:原文链接 http://www.cnblogs.com/mengdd/archive/2013/01/09/2853254.html 管理Fragments FragmentManager 为了管 ...
- ARM系统中函数调用过程中的参数传递-转
在 嵌入式软件编程中,经常会用到函数调用,之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器R0传递第一个参数,R1传递到第 二个..一直到R3传递第四个参数.但是实际上有时可 ...
- HDU 5171 GTY's birthday gift 矩阵快速幂
GTY's birthday gift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- Fruit Feast
Fruit Feast 题目描述 Bessie has broken into Farmer John's house again! She has discovered a pile of lemo ...
- JQuery中的mouseover和mouseenter的区别
mouseover和mouseout是一对:mouseenter和mouseleave是一对. 相同点:都是鼠标经过就触发事件 不同点: 给外盒子一个经过触发事件,但是mouseover会在鼠标经过外 ...
- swift之向ftp服务器传文件
在 mac 上如何使用 xcode, swift 语言开发一个向 ftp 服务器上传文件的工具? 使用的是第三方库 Rebekka,下载地址为:https://github.com/Constanti ...
- highcharts第一篇---简介和使用
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ...