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 中的 重载和重写 这个概念,做一个微不足道的小小小小结 重载 重载:编译时多态,同一个类中的同名的方法,参数列表不同,与返回值无关. 有以下几点: 方法名必须相同: ...
随机推荐
- LINUX中磁盘挂载与卸除
一.挂载格式与参数说明: 要将文件系统挂载到我们的 Linux 系统上,就要使用 mount 这个命令啦! 不过,这个命令真的是博大精深-粉难啦!我们学简单一点啊- ^_^ [root@www ~]# ...
- sql视图
什么是视图 大家都知道,我们国家现在“神七”上天了.从美国的月球登月开始,人类上天不再是神话.听说,在美国,你只要出几十万美元,您就可以上一次月球进行太空旅行,所以,我们相信:在不久的将来,上天旅行将 ...
- merge_partition
set echo on time on timing on spool 01_merge_partition.log @/testdb/change/env/env_test.sql connect ...
- Android调用第三方so
http://blog.csdn.net/jiuyueguang/article/details/9450597 ubuntu下整合eclipse和javah生成jni头文件开发android的nat ...
- ASCII,Unicode 和通用方式
ASCII码 字符char,字符指针char*,字符数组char a[]; 例如:char a='A'; char* pC="beijing"; char aC[]="b ...
- 基于心跳的socket长连接
http://coach.iteye.com/blog/2024444 基于心跳的socket长连接 博客分类: http socket 案例: 心跳: socket模拟网页的报文连接某个网站,创建t ...
- Android代码资源的国际化
internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n. 一般用语言_地区的形式表示一种语言,如 zh ...
- [转] hibernate和ibatis的对比
以下文章来源于:http://blog.csdn.net/tianya2198622/article/details/3859859 IBATIS: iBATIS一词来源于“internet” ...
- CodeForces 620E New Year Tree
线段树+位运算 首先对树进行DFS,写出DFS序列,记录下每一个节点控制的区间范围.然后就是区间更新和区间查询了. 某段区间的颜色种类可以用位运算来表示,方便计算. 如果仅有第i种颜色,那么就用十进制 ...
- 控制流之continue
continue语句continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后 继续 进行下一轮循环.使用continue语句~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...