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. Scala-的元组和映射

    package com.mengyao.scala.function /** * Scala 映射 * Scala中的Key,Value集合被称为映射,映射中的每一个key,value称为对偶 *   ...

  2. CDH-5.4.3离线安装

    使用CM离线安装CDH-5.4.3,如下: cdh5.4.3安装 配置/etc/hosts vim /etc/hosts 192.168.10.1 s1 192.168.10.2 s2 192.168 ...

  3. IT项目外包有哪些注意事项

    2015年两会上,李克强总理在政府工作报告中首次提出“互联网+”计划,各种互联网创业项目也如雨后春笋般破土而出.由于很多创业团队并没有自己的技术团队,所以软件外包成为很多创业项目普遍采取的一种方案.在 ...

  4. cocos 的CCScheduler模块

    scheduleSelector函数->查找m_pHashForTimers是否有存储回调的Obj类实例,否,创建新条目tHashTimerEntry,指向回调类实例,tHashTimerEnt ...

  5. Java_io体系之PipedWriter、PipedReader简介、走进源码及示例——14

    Java_io体系之PipedWriter.PipedReader简介.走进源码及示例——14 ——管道字符输出流.必须建立在管道输入流之上.所以先介绍管道字符输出流.可以先看示例或者总结.总结写的有 ...

  6. oracle 性能优化--索引总结

    索引是建立在表的一列或多个列上的辅助对象,目的是加快訪问表中的数据: Oracle存储索引的数据结构是B*树.位图索引也是如此,仅仅只是是叶子节点不同B*数索引: 索引由根节点.分支节点和叶子节点组成 ...

  7. js过滤空格

    点击查看效果 点击进入下载 <html> <head> <title> 过滤空格 </title> <SCRIPT LANGUAGE=" ...

  8. POJ 2752 Seek the Name, Seek the Fame(next数组的理解)

    做此题,只要理解好next数组就行....................... #include <cstdio> #include <cmath> #include < ...

  9. Java为什么使用连接池

    一.简介 动态Web站点往往用数据库存储的信息生成Web页面,每一个页面请求导致一次数据库访问.连接数据库不仅要开销一定的通信和内存资源,还必须完成用户验证.安全上下文配置这类任务,因为往往成为最为耗 ...

  10. solr创建新的Core

    1.  在example目录下创建taotao-solr文件夹: 2.  将./solr下的solr.xml拷贝到taotao-solr目录下: 3.  在taotao-solr下创建taotao目录 ...