首页 > 编程语言 >java学习日记20230317-多态

java学习日记20230317-多态

时间:2023-03-18 23:24:16浏览次数:40  
标签:java 对象 子类 多态 编译 类型 20230317 父类

多态

  • 方法和对象爱过你具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承的基础上;
    • 方法的重载体现多态
    • 方法的重写体现多态
    • 对象的多态
      • 一个对象的编译类型和运行可以不一致;
      • 编译类型在定义对象时,就确定了,不能改变;
      • 运行类型时可以变化的
      • 编译类型看定义时=号的左边,运行类型看=号的右边
    • 多态的细节
      • 多态的前提:两个对象(类)存在继承关系
      • 多态的向上转型
        • 父类的引用指向了子类的对象;
        • 父类类型 引用名 = new 子类类型();
        • 编译类型看左边,运行类型看右边,可以调用父类中的所有成员(需要遵守访问权限),不能调用子类中的特有成员,最终运行结构看子类的具体实现
      • 多态的向下转型
        • 子类类型 引用名 = 子类类型 父类引用
        • 只能强转父类的引用,不能强转父类的对象
        • 要求父类的引用必须指向的是当前目标类型的对象:Animal animal = new Cat(); Cat cat = (Cat) animal;
        • 可以调用子类类型中所有的成员
      • 属性没有重写之说,属性的值看编译类型
      • instanceOf比较操作符,用于判断对象的运行类型是否为XX类型或XX类型的子类型
      • java的动态绑定机制
        • 当调用对象方法的时候,该方法会和该对象的内存地址绑定/运行类型绑定
        • 当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用;
    • 多态的应用
      • 多态数组
        • 数组的定义类型为父类类型,里面的实际元素为子类类型
      • 多态参数
        • 方法定义的形参类型为父类类型,实参类型允许为子类类型

标签:java,对象,子类,多态,编译,类型,20230317,父类
From: https://www.cnblogs.com/DragonJack/p/17225288.html

相关文章

  • java学习第一天
    java学习第一天第一个代码helloworld用cmd指令编译和运行Java文件Javac加Java文件名,编译javac编译文件会生成class文件Java运行class文件(无后缀)java程序运行机......
  • jlink打包javaFX应用和引用第三方库处理
    操作环境说明:操作系统:windows11(linux也可以参考本文操作)jdk版本:openjdk-17+35(理论上jdk9之后都可以按本文操作,具体是否可行,未验证)javaFX版本:javafx-sdk-17.0.2本......
  • 给我说说你对Java GC机制的理解?
    JVM的运行数据区方法区不止是存“方法”,而是存储整个class文件的信息,JVM运行时,类加载器子系统将会提取class文件里面的类信息,并将其存放在方法区中。例如类的名称、类......
  • 用Java代码验证三门问题
    三门问题(MontyHallproblem)亦称为蒙提霍尔问题,出自美国的电视游戏节目Let'sMakeaDeal。问题名字来自该节目的主持人蒙提·霍尔(MontyHall)。参赛者会看见三扇关闭......
  • JavaScript 数据类型详解
    原文链接:​   ​​https://note.noxussj.top/?source=51cto​​常见的ES5数据类型分为基本数据类型、引用数据类型两种。包含字符串、数字、对象、数组、函数、布尔值......
  • 你说你精通Java并发,那给我讲讲J.U.C吧
    J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心。Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了......
  • Java笔记(二):String类
    String代表的是Java中的字符串,String类⽐较特殊,它整个类都是被final修饰的,也就是说,String不能被任何类继承,任何修改String字符串的⽅法都是创建了⼀个新的字......
  • Java笔记(一):基础
    1.JDK和JRE的区别JDK(JavaDevelopmentKit)开发工具基本类库javac编译javap反编译javadoc运行环境JRE(JavaRuntimeEnvironment)3.Lambda表达式使......
  • 带你深入Java Log框架,彻底搞懂Log4J、Log4J2、LogBack,SLF4J
    最近系统被扫出来还在使用老旧的log4j,需要升级到最新的log4j。但是在升级的发现,Java相关的日志处理库有log4j,log4j2,slf4j和logback,初一看确实有点头大,那么区别是啥呢?......
  • Java三大版本。JDK、JRE、JVM
    JavaSE:标准版(桌面程序,控制台开发...)JavaME:嵌入式开发(手机,小家电...)JavaEE:E企业级开发(Web端,服务器开发...)JDK:javadevelopmentkitJava开发者工具JRE:javaruntimeen......