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_多态的更多相关文章

  1. 黑马程序员_Java面向对象2_继承

    4.面向对象_继承 4.1继承的概述 提高了代码的复用性. 让类与类之间产生了关系,有了这个关系,才有多态的特性. 注意:千万不要为了获取其他类的功能而去继承,简化代码而继承.必须是类与类之间有所属关 ...

  2. 黑马程序员_Java面向对象1_封装

    3.面向对象_封装 3.1面向对象概念 3.1.1理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为(执行者) 面向对象:将功能封装进对象,强调具备了 ...

  3. 黑马程序员_Java面向对象_异常

    6.异常 1.异常: 就是程序在运行时出现不正常的情况.问题也是现实生活中一个具体的事物,也可以通过Java的类进行描述,并封装成对象.Exception和Error的子类名都是以父类名作为后缀名. ...

  4. 黑马程序员_Java面向对象_包

    7.包 7.1包(package) 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称是:包名.类名. 包也是一种封装形式. 利用命令行自动生成文件夹格式:D:\jav ...

  5. 黑马程序员_Java面向对象_内部类

    6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...

  6. 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表

    \day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...

  7. 黑马程序员_Java基础视频-深入浅出精华版--视频列表

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

  8. 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

  9. 黑马程序员_Java基础:网络编程总结

    ------- android培训.java培训.期待与您交流! ---------- Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是 ...

随机推荐

  1. [每日一题] OCP1z0-047 :2013-08-05 SELECT语句――列的表达式

    按题意操作如下: hr@MYDB> SELECT first_name,salary,salary*12+salary*12*0.5 "ANNUAL SALARY + BONUS&qu ...

  2. javaweb笔记之get和post的不同

    1 GET方式 1)提交的参数数据会放在请求信息的URL后面.以?开头,多个参数数据以 & 分 割. 2)浏览器的地址会发生改变 3)参数数据的容量不能超过1KB. 4)不适合敏感数据的提交 ...

  3. Filebeat中文指南

    Filebeat中文指南 翻译自:https://www.elastic.co/guide/en/beats/filebeat/current/index.html 译者:kerwin 鸣谢:tory ...

  4. Jmeter接口测试案例实践(一)

    1.1. 接口介绍 本次测试的接口采用内网中的通讯录查询接口进行测试,接口参数如下: 1.2. 使用Jmeter进行接口测试 1.2.1. 打开Jmeter 下载好Jmeter后,双击bin目录下的j ...

  5. PHP设计模式笔记六:数据对象映射模式 -- Rango韩老师 http://www.imooc.com/learn/236

    数据对象映射模式 1.数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作 2.在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性 ...

  6. 【C#基础】CSA控件编写秘籍

    新建CSA控件 1.新建一个纯类,命名空间是: namespace SimPerfect.CSAControlLibrary.CSAControls 2.实现两个构造函数:无参和传Candy参数 pu ...

  7. 【性能优化】优化笔记之一:图像RGB与YUV转换优化

    本文主要介绍如何优化您自己的CODE,实现软件的加速.我们一个图象模式识别的项目,需要将RGB格式的彩色图像先转换成黑白图像.图像转换的公式如下: Y = 0.299 * R + 0.587 * G ...

  8. Hadoop 开源调度系统zeus(二)

    紧跟之前Hadoop 开源调度系统zeus(一) 本节主要介绍一下zeus的架构: 先给一个zeus的架构图 无论Master还是Worker都有一套WEB UI,无论从哪个上面去看,看到的结果都是一 ...

  9. FoxOne---一个快速高效的BS框架--(4)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  10. mybatis与spring的整合

    今天是mybatis的最后一天,也是最为重要的一天,mybatis与spring整合,(spring相关知识我会抽一个大的模块进行讲解). 首先加入Spring的依赖 <dependency&g ...