Day04:继承的意义(下)
对象转型
向上造型
什么是向上造型?
子类对象赋给父类引用。
父类引用指向子类对象。
子类转成父类 默认进行(父类引用指向子类对象)。
为什么需要向上造型?
子类对象可以放入父类类型的数组中。
父类数组同一管理所有子类对象。
减少代码冗余
向上造型的格式:
- 父类类型 引用=子类对象;
Pet p=new Dog();
向上造型的特性:
向上造型后的父类引用,只能调用到父类中的成员,不能调用到子类特有的成员。
向下转型(强制类型转换):
什么是类型转换?
就是将一个类型的引用,转换成另一个类型。
为什么需要类型转换?
父类引用无法调用到子类特有的成员如果必须要调用,就需要类型转换。
父类转成子类 强制进行。
强制类型转换的注意事项:
如果将一个A子类的引用强转成B子类,会发生类型转换异常ClassCastException为了防止这样的异常发生在强转前,一般要先判断一下实际的类型
关键字:
instanceof:测试左边的对象是否是右边类的实例,
如果是返回true否则fasle。
- <对象> instanceof <类型>
方法重写(方法覆盖,override)
什么是方法重写?
子类不满父类中某个方法的功能,重新编写父类方法的现象。
什么需要方法重写?
父类中的方法不能满足子类的要求。
如何进行方法重写?
简单的方法重写:
在子类中编写一个和父类中的某个方法,方法名相同,参数列表相同,访问修饰符和返回值也相同的方法。
方法重写的效果:
在向上造型的前提下
指向子类对象的父类引用
在调用被子类重写的方法时
运行的是子类重写后的方法
方法重写的运行期绑定:
父类引用在运行方法时
jvm会检测这个父类引用指向的
真实类型,调用真实类型重写后的方法
方法重写的详细规则:
必须相同的方法名,参数列表
可以不同的
返回值:
基本数据类型。
必须相同引用数据类型。
可以返回其子类
访问修饰符:
子类重写的方法的访问修饰符,
不能比父类更严格
访问修饰符类型:
public
protected
默认
private
重载和重写的区别?
位置 方法名 参数 返回值 修饰符
重载:同类 相同 不同 无关 无关
重写:子类 相同 相同 相同 相同
重载:只看同名方法的参数列表。编译期绑定
重写:子父类方法要一模一样。运行期绑定
Day04:继承的意义(下)的更多相关文章
- Unit04 - 继承的意义(下) 、 访问控制 、 static和final
Unit04 - 继承的意义(下) . 访问控制 . static和final 1.方法的重写(Override):重新写.覆盖 1)发生在父子类中,方法名称相同,参数列表相同,方法体不同 2 ...
- Unit03 - 对象内存管理 、 继承的意义(上)
Unit03 - 对象内存管理 . 继承的意义(上) 1.内存管理:由JVM来管理的 1)堆: 1.1)存储所有new出来的对象(包含成员变量) 1.2)没有任何引用所指向的对象就是垃圾 ...
- HDU - 5755:Gambler Bo (开关问题,%3意义下的高斯消元)
pro:给定N*M的矩阵,每次操作一个位置,它会增加2,周围4个位置会增加1.给定初始状态,求一种方案,使得最后的数都为0:(%3意义下. sol:(N*M)^3的复杂度的居然过了. ...
- maven工程聚合和继承的意义
聚合的意义: 对于一个大型的项目,如果我们直接作为一个工程开发,由于相互之间的依赖我们只能从头到尾由一组人开发,否则就会出现一个类好多人开发,相互更改的混乱局面,这个时候我们就将项目进行了横向和纵向的 ...
- HDU 5627 Clarke and MST &意义下最大生成树 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5627 题意:Bestcoder的一道题,让你求&意义下的最大生成树. 解法: 贪心,我们从高位 ...
- 李雅普诺夫函数 LyapunovFunction 李雅普诺夫意义下的稳定性
https://zh.wikipedia.org/zh-hans/李亞普諾夫函數 李雅普诺夫函数(Lyapunov function)是用来证明一动力系统或自治微分方程稳定性的函数.其名称来自俄罗斯数 ...
- 2019牛客暑期多校训练营(第九场)B:Quadratic equation (二次剩余求mod意义下二元一次方程)
题意:给定p=1e9+7,A,B. 求一对X,Y,满足(X+Y)%P=A; 且(X*Y)%P=B: 思路:即,X^2-BX+CΞ0; 那么X=[B+-sqrt(B^2-4C)]/2: 全部部分都要 ...
- hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五场 1004) 【组合数学 + 数论 + 模意义下的FFT】
题目链接 首先利用组合数学知识,枚举两人的总胜场数容易得到 这还不是卷积的形式,直接搞的话复杂度大概是O(n^2)的,肯定会TLE.但似乎和卷积有点像?想半天没想出来..多谢Q巨提醒,才知道可以用下面 ...
- 模意义下的FFT算法
//写在前面 单就FFT算法来说的话,下面只给出个人认为比较重要的推导,详细的介绍可参考 FFT算法学习笔记 令v[n]是长度为2N的实序列,V[k]表示该实序列的2N点DFT.定义两个长度为N的实序 ...
随机推荐
- string::data
const char* data() const noexcept;注:同c_str #include <iostream>#include <string>#include ...
- 深入理解java不可变对象(转)
深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真 ...
- JavaWeb--ServletContext
https://www.jianshu.com/p/31d27181d542 java类中获取ServletContext的方法 起因是我想要获取一个相对路径,需要用到servletContext的g ...
- Linux下C++编译(代码高亮自动换行)
1.环境准备 在ubuntu中要想编译c程序可以安装gcc编译器,编译c++的话就不能使用gcc了,要使用g++编译器. 安装gcc或是g++可以在新立得软件包管理器中直接搜索后安装或是使用终端文字命 ...
- Acwing-281-硬币(背包)
链接: https://www.acwing.com/problem/content/283/ 题意: 给定N种硬币,其中第 i 种硬币的面值为Ai,共有Ci个. 从中选出若干个硬币,把面值相加,若结 ...
- qt5---滑动条QSlider
需要 #include <QSlider> #include "win.h" #include <QDebug> #include <QPush ...
- JAVA笔记8-对象转型casting
1.规则 (1)基类(父类)的引用类型变量可以指向其子类对象:(向上转型) (2)基类的引用不可以访问其子类对象新增加的成员(属性和方法): (3)可以使用“引用变量 instanceof 类名”来判 ...
- AOI 设计
http://blog.csdn.net/zhanghefu/article/details/25833535 云风的Blog 并进行整理而写. AOI(Area Of Interest),中文就是感 ...
- Jdk1.7 与 jdk1.8的区别
在jdk7的新特性方面主要有下面几方面的增强: 1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头. 所有整数int.short.long.byte都可以用二进制表示: byte aBy ...
- IntelliJ IDEA 常用快捷键整理
1. -----------自动代码-------- 常用的有fori/sout/psvm+Tab即可生成循环.System.out.main方法等boilerplate样板代码 例如要输入for( ...