黑马程序员_Java面向对象3_多态
5.面向对象_多态
多态定义:某一种事物存在的多种形态。
- 例:动物中猫,狗。
- 猫这个对象对应的类型是猫类型。
- 猫 x = new 猫();
- 同时猫也是动物的一种,也可以把猫称为动物。
- 动物 y = new 猫();
- 动物是猫和狗具体事物中抽取出来的父类型。
- 父类型引用指向子类对象。
1、多态的体现。
父类的引用指向了自己的子类。
父类的引用也可以接收自己的子类对象。
2、多态的前提。
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提:存在覆盖。
3、多态的好处。
多态的出现大大的提高程序的扩展性。
4、多态的弊端。
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5、多态的应用。
Animial a = new cat();//类型提升,向上转型。
//如果想要调用猫的特有方法时,该怎样调用?强制将父类的引用,转成子类类型(向下转型)。cat c = (cat)a;//注意:不能将父类对象转成子类类型。能转换的是父类引用指向了子类对象时,该引用可以被提升,也可以被强制转换。多态自始至终都是子类对象在做着变化。
6、多态的出现代码中的特点(多态使用的注意事项)
多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,否则编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数和变量的特点:
无论编译和运行,都参考左边。
7、instanceof
通常在两种情况下调用,1、子类是有限的。2、在进行其他比较的时候,要确定它到底是哪一种类型,再调用它特有的方法去比较,这个时候就需要用instanceof判断一下。
if(!obj instanceof Demo) return false//直接抛出异常更为合适。
8、Object类
Object:是所有对象的直接或者间接父类。传说中的上帝。该类中定义肯定是所有对象都具备的功能。
如果自定义类中与父类中有相同的功能,就没有必要重新定义,只要沿袭父类中的功能,建立自己特有的内容即可,这就是覆盖。
equals(Object obj); : (指示其他某个对象是否与此对象“相等”)Java认为所有的对象都具备比较性,都能比较两个对象是否相同。
toString(); :(返回该对象的字符串表示)Java认为所有对象都能变成字符串被打印。
hashCode(); :(返回该对象的哈希码值)。
getClass(); :(返回该Object类的运行时类)
黑马程序员_Java面向对象3_多态的更多相关文章
- 黑马程序员_Java面向对象2_继承
4.面向对象_继承 4.1继承的概述 提高了代码的复用性. 让类与类之间产生了关系,有了这个关系,才有多态的特性. 注意:千万不要为了获取其他类的功能而去继承,简化代码而继承.必须是类与类之间有所属关 ...
- 黑马程序员_Java面向对象1_封装
3.面向对象_封装 3.1面向对象概念 3.1.1理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为(执行者) 面向对象:将功能封装进对象,强调具备了 ...
- 黑马程序员_Java面向对象_异常
6.异常 1.异常: 就是程序在运行时出现不正常的情况.问题也是现实生活中一个具体的事物,也可以通过Java的类进行描述,并封装成对象.Exception和Error的子类名都是以父类名作为后缀名. ...
- 黑马程序员_Java面向对象_包
7.包 7.1包(package) 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称是:包名.类名. 包也是一种封装形式. 利用命令行自动生成文件夹格式:D:\jav ...
- 黑马程序员_Java面向对象_内部类
6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...
- 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表
\day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...
- 黑马程序员_Java基础视频-深入浅出精华版--视频列表
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 黑马程序员_Java基础:网络编程总结
------- android培训.java培训.期待与您交流! ---------- Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是 ...
随机推荐
- word-wrap: break-word 和 word-break: break-all 到底有啥区别?
做项目改bug的时候,遇到过好多次,要么是文本超出文本区域,或者单词太长(一般是url链接中的一些鬼),把装它的标签强制撑大,导致一些响应式问题.除此之外,还有很多问题,每次都是恍然醒悟,然后又在网上 ...
- (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
转自:http://cloudfields.net/blog/ios-push-notifications-encryption/ The serious pains of setting up a ...
- linux串口驱动分析
linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...
- slide from one widget to another
int main(int argc, char **argv) { QApplication app(argc, argv); QWidget panel; QVBoxLayout *l = new ...
- 数据视化Echarts+百度地图API实现市县区级下钻
开始 这两天公司有个页面需要做数据可视化的展示,数据视化采用的是Echarts+百度地图API做展示,需要用到县级区级下钻的一个联动效果发现网上关于Echarts做到县区级下钻的资料很少,有的话也不是 ...
- inode-软链接与硬链接
一.inode是什么?理解inode,要从文件储存说起.文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB).操作系统读取硬 ...
- 【转】tkinter实现的文本编辑器
此代码是看完如下教学视频实现的,所以算是[转载]吧: 效果: 代码: # -*- encodin ...
- (转)passwordStrength 基于jquery的密码强度检测代码使用介绍
使用很简单. 代码如下: $('#pass').passwordStrength(); XHTML 代码如下: <p><label>请输入密码:</label> ...
- myeclipseb笔记(4):拷贝文件的相应配置
在MyEclipse中,经常需要用到拷贝工程文件,但是直接拷贝的话,就会出现访问不了的情况,如下: 原文件learn/StudManage/login.jsp,访问: 拷贝工程,改名,访问: 就出现了 ...
- C++ 基本数据结构整理
Hash Map (Unordered_map) Insert #include <unordered_map> using namespace std; unordered_map &l ...