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的方法重载,就 ...
随机推荐
- iOS学习笔记(2)— UIView用户事件响应
UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相关的属性和方法. 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为 ...
- spring-boog-测试打桩-Mockito
Mockito用于测试时进行打桩处理:通过它可以指定某个类的某个方法在什么情况下返回什么样的值. 例如:测试 controller时,依赖 service,这个时候就可以假设当调用 service 某 ...
- 全网最全JS正则表达式 校验数字
Js代码 <script type="text/javascript"> function SubmitCk() { var reg = /^([a-zA-Z0-9]+ ...
- aarch64_g4
golang-github-inconshreveable-muxado-devel-0-0.7.gitf693c7e.fc26.noarch.rpm 2017-02-11 16:47 30K fed ...
- JavaScript新手学习笔记(一)
1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...
- 【C语言学习笔记】字符串拼接的3种方法 .
昨天晚上和@buptpatriot讨论函数返回指针(malloc生成的)的问题,提到字符串拼接,做个总结. #include<stdio.h> #include<stdlib.h&g ...
- RabbitMQ--Publish/Subscribe(四)
先前例子中,我们创建了一个简单的日志系统,广播messages到consumer接收方. 但如果有日志错误级别的,不同的consumer接收不同错误级别的信息.比如consumer1接收info和wa ...
- 02 Go 1.2 Release Notes
Go 1.2 Release Notes Introduction to Go 1.2 Changes to the language Use of nil Three-index slices Ch ...
- Nginx - 压缩模块
1. 前言 在 Nginx 中与网页压缩相关的模块有两个:一个是 HttpGzipModule,另一个是 HttpGzipStaticModule.前者用于启用在文件传输过程中使用 gzip 压缩,而 ...
- 洛谷P3203弹飞绵羊
传送门啦 非常神奇的分块大法. 每块分 √N 个元素 , 预处理出来:对于每个点,记录两个量:一个是它要弹几次才能出它所在的这个块,另外一个是它弹出这个块后到哪个点. 查询操作:一块一块跳过去 单次复 ...