黑马程序员----多态
来源:互联网 发布:淘宝网韩版春装 编辑:程序博客网 时间:2024/05/22 03:29
问题点:如何具体理解父类的引用? 答:这个父类就是这个子类的另一种形态,可指向
多态的通俗理解:
说白了,一只猫过来了,可以说:“这猫好可爱”,也可以说“这小动物很可爱”,就是说猫具备了“猫 ”和 “动物”这两种形态,多态就这样理解!
动物 y = new 猫(); 看到这样的现象就可以看做是多态的出现了!
多态的好处:
父类作为引用可以接受更多对象嘛。
父类引用子类对象建立方法,直接体验多态的好处,剩写了好多代码。
同时前期定义的代码可以使用后期的内容。
多态的弊端:
前期定义的内容不能使用(调用)后期子类的特有内容,打个比方:就是说猫这个对象,不能从动物这个类中拿到抓老鼠的方法,因为其它动物不一定具备嘛~~!
多态的前提:
1,必须有关系,继承,实现。
2,要有覆盖。(要实现方法,不然怎么搞?)
多态的转型:
用不了抓老鼠的功能了。专业说法:向上转型。
自动类型提升,猫对象提升了动物类型。那就不能按照猫的特有性质来操作了,就用动物的方式来操作吧!
限制对特有功能的访问(我操作共有的功能)
专业说法:向下转型
向下转型的目的是为了使用子类的特有方法。
报错!是小猫变成动物,又变成了小猫。
对于转型,自始至终都是子类对象在做着类型的变化。
毕老师和毕姥爷的故事:
注意都是子类对象在做着转换,别拿父类来搞,一下搞出异常来了!
这个传猫行!传个狗就编译通过,运行异常!
来个判断!instanceof 判断对象具体类型!只能用于引用数据类型判断
判断个Animal,传什么都能进!!!猫是不是动物?狗是不是动物?那不什么动物都能抓老鼠?
/*********************************/
覆盖只发生在函数上
/*********************************/
————————————————————————————————————————————————————————————————————
多态时,
成员的特点:
1,成员变量。
编译时:参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中的是否有调用的成员变量,并运行该所属类中的成员变量。
简单说:编译和运行都参考等号的左边。哦了。
作为了解。(面试的时候用,谁他妈无聊在子父类中定义同样的变量?)
编译报错!比方:如果动物类不能吃饭,猫类能吃吗?猫可是动物的一种!动物不能吃!猫就不能吃!
2,成员函数(非静态)。
编译时:参考引用型变量所属的类中的是否有调用的函数。有,编译通过,没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
简单说:编译看左边,运行看右边。
因为成员函数存在覆盖特性。
非静态的成员函数动态跟着对象绑定,静态的呢,就可以直接调用,以为着加载的时候静态就有所属类了!(静态函数不依赖对象了,Fu f = new Zi(); 跟Zi类就关系!)
3,静态函数。
编译时:参考引用型变量所属的类中的是否有调用的静态方法。
运行时:参考引用型变量所属的类中的是否有调用的静态方法。
简单说,编译和运行都看左边。
其实对于静态方法,是不需要对象的。直接用类名调用即可。
多态中成员变量与静态函数 都是看左边,非成员函编译看左边,运行看右边。
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 24.黑马程序员-多态
- 黑马程序员-多态
- 黑马程序员---多态
- 黑马程序员_多态
- 黑马程序员-多态
- 黑马程序员 多态、重载
- 黑马程序员_java 多态
- 黑马程序员---多态
- 黑马程序员-多态
- 黑马程序员-继承,多态
- 黑马程序员_java多态
- 黑马程序员--多态
- 黑马程序员--多态
- 黑马程序员—多态
- 黑马程序员_多态
- DataX简介
- android 反编译 apktool 的使用 dex2jar
- DICOM医学图像显示算法改进与实现
- 视觉词袋模型
- 内联函数inline的使用
- 黑马程序员----多态
- 2012蓝桥杯预赛题-奇怪的比赛-递归实现
- JPA视频学习笔记
- linux脚本编程(shell)浅介
- 文本编辑器GVim-----界面完美配置
- mac os eclipse maven lib 依赖问题的解决办法
- Should IBOutlets be strong or weak under ARC?
- 索引与性能分析
- JAVA初学者