1. 定义

    对象具有多种形态

  2. 类型

    • 引用的多态:

      • 父类的引用指向自身对象
      • 父类的引用指向子类对象
TrafficTool traffictool=new TrafficTool();//父类的引用指向本身类对象
TrafficTool traffictool1=new BMW();//父类引用指向子类对象
    • 方法的多态:

    创建本类对象时,调用的方法为本类方法。

创建子类对象时,调用的方法为子类继承的或者重写的方法。不允许调用子类独有的方法。

public class BMW extends TrafficTool{
int width;
int height;
public void BMW(){
System.out.println("这是子类!!");
}
public void drive(){
System.out.println("宝马汽车可以开!!");
}
public void bmw(){
System.out.println("这是子类独有的方法!!");
}
}

  1. 多态的优势

    • 多态的出现大大的提高了程序的扩展性
  2. 表现形式

    • java中的多态的表现形式一般分为两种:overriding(重写)和overloading(重载)
    • 如果在子类中定义某方法与其父类有相同的名称和参数,我们就可以这样说此方法被子类重写overriding,子类中的对象使用这个方法的时候,将调用子类中中的定义,此时对子类来说,父类中的方法定义如同被”屏蔽”了一样。如果在一个类中定义了多个同名的方法,它们或有不同的参数或有不同的参数类型,则称为方法的重载overloading。并且overloading的方式是可以改变返回值类型的。
  3. 引用类型转换

    • 向上类型转换,即隐式/自动类型转换,是小类型转换大类型
    • 向下类型转换,即强制类型转换,是大类型转换小类型
        BMW bmw=new BMW();
TrafficTool traffictool=bmw;//自动类型提升,向上类型转换
BMW bmw2=(BMW)traffictool;//强制类型转换,向下类型转换
  1. 使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题
    public static void main(String[] args) {
TrafficTool traffictool=new BMW();//父类引用指向子类对象
if(traffictool instanceof BMW){//父类引用能否转换子类类型
BMW bmw2=(BMW)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以可以强制转换
}else{
System.out.println("无法进行类型转换!");
}
if(traffictool instanceof QQ){
QQ qq2=(QQ)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以不可以转成子类qq2对象
}else{
System.out.println("无法进行类型转换,转换成QQ类型");
}
}

java三大特性--多态(1)的更多相关文章

  1. 三、java三大特性--多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  2. Java 三大特性——封装、继承、多态

    一.封装 封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节 ...

  3. JAVA三大特性之多态

    面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...

  4. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  5. java三大特性:封装、继承、多态

    Java三大特性之封装   一.定义 封装性指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 二.使用封装的好处: 1 ...

  6. 浅析Java三大特性封装、继承、多态,及作业分析

    前言 本次博客衔接上次博客,作为这一阶段Java学习的分析.上一篇博客着重介绍了Java的OO编程思维,面向对象与面向过程的区别.本篇博客重心在Java的三大技术特性,附带作业分析. Java三大特性 ...

  7. Java三大特性

    Java 三大特性,算是Java独特的表现,提到Java 的三大特性, 我们都会想到封装, 继承和多态 这是我们Java 最重要的特性. 封装(Encapsulation) : 封装:是指隐藏对象的属 ...

  8. 浅谈Java三大特性

    Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...

  9. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

随机推荐

  1. Uiautomator之入门

    优点:1.可以对所有操作进行自动化,操作简单: 2.不需要对被测程序进行重签名,且,可以测试所有设备上的程序,比如~某APP,比如~拨号,比如~发信息等等    3.对于控件定位,要比robotium ...

  2. idea开发swing(二)

    闲话少说,书接idea开发swing(一). 程序编译完成后,需要打包发布,如果有fat_jar的同学可以通过该插件打包,这里是使用ant来打包,步骤如下: 一.编写build.xml <?xm ...

  3. 步步为营-11-List<T>泛型的简单练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. jvm类加载器以及双亲委派

    首先来了解几个概念: 类加载: 概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验--转换解析--初始化,最终形成能被java虚拟机直接使用的java类型,就是jvm的类加载机制. ...

  5. 攻击图生成工具mulval的安装和配置

    https://doc.mbalib.com/view/8620168b35e50fbe9b005fee33c192ad.html http://www.bingbig.com/227.html

  6. AngularJS+Node.js+socket.io 开发在线聊天室

    所有文章搬运自我的个人主页:sheilasun.me 不得不说,上手AngularJS比我想象得难多了,把官网提供的PhoneCat例子看完,又跑到慕课网把大漠穷秋的AngularJS实战系列看了一遍 ...

  7. CS224d 单隐层全连接网络处理英文命名实体识别tensorflow

    什么是NER? 命名实体识别(NER)是指识别文本中具有特定意义的实体,主要包括人名.地名.机构名.专有名词等.命名实体识别是信息提取.问答系统.句法分析.机器翻译等应用领域的重要基础工具,作为结构化 ...

  8. 关于tomcat性能优化

    前言 关于 Tomcat 性能调优,一直以来就是运维面试的一个重要话题.今天我们就简单聊聊 Tomcat 如何进行性能优化? 首先声明,我不会去说 Tomcat 是什么,内部结构,原理什么的.我不懂. ...

  9. ajax请求案例

    let url="loginToIndex"; $.ajax({ url:url,//请求的url type:"POST",//请求方式 async:false ...

  10. C++语言实现-拓扑排序

    1.拓扑排序的概念 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则 ...