Java重写、重载与覆盖
Java继承、重载与重写
一、继承(单继承)
1、利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类。
2、当Sub类和Base类在同一个包时,Sub类继承Base类中的public/protected/默认级别的变量和方法
3、在不同包时继承public/protected级别的变量和方法。
二、方法重载
1、方法的方法名称相同;
2、方法的参数列表必须不同(类型,数目,顺序);
3、方法的返回值可以不同;
4、方法重载发生在同一各类中。
三、方法重写
1、方法头相同,方法体不同;
2、子类的方法名称返回类型及参数签名必须与父类的一致;
3、子类方法不能缩小父类方法的访问权限;
4、子类方法不能抛出比父类方法更多的异常;
5、方法覆盖只存在于子类和父类之间,同一个类中只能重载;
6、父类的静态方法不能被子类覆盖为非静态方法
7、子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法(满足覆盖约束),而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。父类的非静态方法不能被子类覆盖为静态方法父类的私有方法不能被子类覆盖父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)。父类的非抽象方法可以被覆盖为抽象方法
四、Super关键字
super和this关键字都可以用来覆盖Java语言的默认作用域,使被屏蔽的方法或变量变为可见。
父类的成员变量和方法为private,使用super访问编译出错在类的构造方法中,通过super语句调用这个类的父类的构造方法在子类种访问父类的被屏蔽的方法和属性,只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内不能使用super
五、多态
对于一个引用类型的变量,Java编译器按照它的声明的类型来处理对于一个引用类型的变量,运行时Java虚拟机按照它的实际引用的对象来处理运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,Java虚拟机采用以下绑定规则
1、实例方法与引用变量实际引用的对象的方法绑定,属于动态绑定;
2、静态方法与引用变量所声明的类型的方法绑定,属于静态绑定;
3、成员变量(包括静态和实例变量)与引用变量所声明的类型的成员变量绑定,属于静态绑定。
六、继承的利弊和使用原则
1、代表系统的接口,描述系统所能提供的服务。继承关系最大的弱点:打破封装精心设计专门用于被继承的类;
2、对这些类必须提供良好的文档说明;
3、尽可能的封装父类的实现细节,把代表时间细节的属性和方法定义为private类型;
4、如果某些实现细节必须被子类访问,定义为protected类型;
5、把不允许子类覆盖的方法定义为final类型;
6、父类的构造方法不允许调用可被子类覆盖的方法;
7、如果某些类不是专门为了继承而设计,那么随意继承它是不安全的、
Java重写、重载与覆盖的更多相关文章
- Java之重载与覆盖
有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式.运行时,J ...
- java 重写 重载
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态 ...
- java的重载、覆盖和隐藏的区别
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- java中重载、覆盖和隐藏三者的区别分析
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- java系列--重载和覆盖小结
继承中属性的隐藏和方法的覆盖 java中规定,子类用于隐藏的变量可以和父类的访问权限不同,如果访问权限被改变,则以子类的权限为准 java中允许子类的变量与父类变量的类型完全不同, ...
- java中重载和覆盖(又称重写)的区别
初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个 ...
- Java重写&重载
在学习完类和对象后,接下来就要进入面向对象的内容了,先从重写和重载开始吧.重写(Override)和重载(Overload)是两个不同的概念,也是两个容易混淆的概念,下面具体来说说这两者. 重写( ...
- java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?重写跟重载的区别?
java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况.与此相对,方法覆盖是说子类重新定义了父类的方法.方法覆盖必须有相同的方法名,参数列表和返回类型. 覆盖者可能不会限 ...
- java中重载与重写的区别
(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. 然后我们再来谈谈 重写(Over ...
- Java中重载和重写的区别
重载 overloading 1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载是一个类中多态性的一种表现. 2) Java的方法重载,就 ...
随机推荐
- PHP编程效率的20个要点-[转]
用 单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符 串当作参数的“函数”(译注:PHP手 ...
- 调整扩大VMDK格式VirtualBox磁盘空间
如果虚拟机的格式是VDI格式的, 那么可以通过这篇文章来调整磁盘大小: 调整Virtual Box硬盘大小 不过楼主当初在创建虚拟机的时候,是用的VMDK格式, 以求与VMWare的兼容性.这时候要扩 ...
- 文件读取 FILE
需要了解的概念 [数据流][缓冲区(Buffer)][文件类型][文件存取方式][借助文件指针读写文件] 需要理解的知识点包括:数据流.缓冲区.文件类型.文件存取方式 1.1 数据流: 指程序与数据的 ...
- 【工具记录】Linux口令破解
1.基础知识 /etc/passwd:记录着用户的基本属性,所有用户可读 字段含义如下: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell eg: root:x:0:0:root ...
- Ubuntu server 搭建Git server【转】
转自:http://www.cnblogs.com/candle806/p/4064610.html Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客 ...
- 机器学习 Python实践-K近邻算法
机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...
- IPC对象的持续性
转载:http://book.51cto.com/art/201006/207275.htm <UNIX网络编程:第2版.第2卷,进程间通信>本书全面深入地讲解了各种进程间通信形式,包括消 ...
- C++ 虚函数及重载、重定义、重写
#include<iostream> usingnamespace std; class BASE { public: BASE()=default; BASE(int publicVal ...
- Oracle学习笔记:trunc函数
在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...
- Effective STL 学习笔记 Item 17: Swap Trick
假设有若干对象存于一个 vector 中: class Widget; vector<Widget> vw; 后来由于某些原因,从该容器中删除了若干对象(参考erase-remove id ...