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的方法重载,就 ...
随机推荐
- VM虚拟机上连接usb无反映
主机的usb连接又是正常的,排除了usb3.0的接口原因后,突然想到了是不是虚拟机的什么服务没有开?进入到控制面板->管理工具->服务,找到 V开头的,发现原来确实是虚拟机有关usb的服务 ...
- jQuery.Validate 验证,以及 remote验证, 多参数传递
jQuery.Validate 验证: http://www.runoob.com/jquery/jquery-plugin-validate.html 教程网址,很简单, 今天主要在这里记录一下re ...
- DirectFB简介以及移植[一]【转】
转自:https://blog.csdn.net/wavemcu/article/details/39251805 ****************************************** ...
- 十、springcloud之Consul注销实例
@Autowired //com.ecwid.consul.v1.ConsulClient private ConsulClient consulClient; @PostMapping(" ...
- HttpClient使用
1.HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包 2.主要的功能 (1)实现了所有 H ...
- idea心得
概述 Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜.出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intel ...
- python网络编程-进程间数据通信(Queue,Pipe ,managers)
一:进程间数据交换方法 不同进程间内存是不共享的,要想实现两个进程间的数据交换,可以用以下方法: Queue,Pipe ,managers 1)Queue,使用方法跟threading里的queue差 ...
- python网络编程--线程使用threading
一:线程使用 线程使用有两种方法,一种是直接使用,二是通过继承threading.Thread类使用 二:函数式使用 函数式:调用thread模块中的start_new_thread()函数来产生新线 ...
- C++之可调用对象
C++中的可调用对象分为以下几种: 函数 函数指针 lambda表达式 bind创建的对象 重载了函数调用运算符(即“()”)的类 函数.函数指针不再介绍.lambda表达式与bind创建的类参考—— ...
- HTML标签列表总览
超文本标记语言(简称:HTML)标记标签通常被称为HTML标签,HTML标签是HTML语言中最基本的单位,HTML标签是HTML(标准通用标记语言下的一个应用)最重要的组成部分.HTML标签的大小写无 ...