在java中,多态主要由以下两种表现方式:

1. 方法的重载(overload)

同一个方法中有多个同名的方法,但这些方法有不同的参数。因此在编译时,就可以确定到底调用哪个方法。它是一种编译时多态。重载可以被看做一个类中的方法多态性。

2. 方法的覆盖(override)

子类可以覆盖父类的方法,因此同样的方法会在父类和子类中有着不同的表现形式。   在java语言中,基类的引用变量不仅可以指向基类的实例对象,也可以指向其子类的实例对象。同时,接口的引用变量也可以指向其实现类的实例对象。这样就可以实现动态绑定。 这样就只有运行时才能确定调用哪个方法,因此通过方法覆盖实现的多态也可以被称为运行时多态。

子类覆盖(override)父类中的方法时,需要注意几点:

类中的方法有多态的概念,类中的成员变量没有多态的概念。

如下代码, 打印的结果是1, 成员变量的取值是父类还是子类并不取决于创建对象的类型,而是取决于所定义变量的类型,这是在编译期间决定的。

import org.junit.Test;public class Base {public int i = 1;@Testpublic void test(){Base b = new Derived();System.out.println(b.i);// b所属的类型是Base, b.i指的是Base类中定义的i}
}class Derived extends Base{public int i = 2;
}

java:多态的实现机制相关推荐

  1. Java 多态的实现机制

    一.定义 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底 ...

  2. JAVA多态的动态绑定机制

    对于多态,大家基本上都很熟悉,日常开发用的也挺多,一句话概括:父类引用指向子类对象 在集合的使用上,List mList = new ArrayList<>(); 在类的继承时,Anim ...

  3. java多态的实现_Java多态的实现机制是什么,写得非常好!

    作者:crane_practice www.cnblogs.com/crane-practice/p/3671074.html 2019-06-13 08:46:00 Java多态的实现机制是父类或接 ...

  4. 类对接口的实现不叫继承_Java多态的实现机制是什么,看完你就知道(值得收藏)...

    Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是 ...

  5. Java多态是什么,怎么实现的,多态例子代码

    目录 子类型和子类 多态分两种 多态的用途 多态的转型 运行时多态的例子 多态实现的机制 JVM 部分内容摘自: Java多态的实现机制是什么,写得非常好!_Java技术栈的博客-CSDN博客 子类型 ...

  6. 【Java】什么是多态?多态的实现机制是什么?

    官方解释: 1.接口的多种不同的实现方式即为多态. 2.多态性是允许你将父类对象设置成为一个或更多的他的子对象相等的技术. 3.我们在程序中定义的引用变量所指向的具体类型和通过改引用变量的方法调用在编 ...

  7. 尝试用HSDB分析JVM运行时内存理解Java多态实现机制

    测试代码 // 接口 package ziya; public interface TestParent {void show(); }package ziya; public class Paren ...

  8. 什么是多态,JAVA 中多态的实现机制

    什么是多态,JAVA 中多态的实现机制 首先声明啊,这里的多态不是生物学和物理学上的多态性,这个是指编程语言中的多态. 官方说明: 多态(英语:polymorphism)指为不同数据类型的实体提供统一 ...

  9. java多态 降低代码耦合性_深度分析:理解Java中的多态机制,一篇直接帮你掌握!...

    Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...

最新文章

  1. django ajax上传文件
  2. Google Guava官方教程(中文版)
  3. 在云服务器上搭建ftp站点
  4. Linux 文件目录特殊权限设定(SUID,SGID,SBIT)
  5. javascript 不让成为nan_这10个JavaScript面试题,看看你会几个?
  6. list取值_Redis中List及quicklist实现-2
  7. python tfidf特征变换_机器学习的“万能模板” - 数据分析
  8. LeetCode 814. 二叉树剪枝(递归)
  9. html 评分五角星的插件,jquery五角星评分插件示例分享
  10. Android实现XML解析技术 (转载http://www.cnblogs.com/hanyonglu/archive/2012/02/28/2370675.html)...
  11. C++ 设计模式 —— 控制器设计模式(实现功能模块间通信)
  12. 敲一下enter键,完成iOS的打包工作
  13. go下载指定版本的依赖包
  14. 华为路由器IPv6 over IPv4 GRE隧道配置详解
  15. jquery boxy
  16. 计算机毕业设计SpringBoot选题推荐——疫情防控志愿者管理系统
  17. 第二本书:疯狂人类进化史20190621
  18. [二进制学习笔记]LibcSearcher报错no matched libc
  19. 文件中的EOF是什么
  20. 【Java基础总结】类加载顺序,new关键字,访问权限修饰符与方法重载等【二】

热门文章

  1. 关于 Capella 需要纠正的语音
  2. 关于PIC和FPGA
  3. 10W学习笔记——查询之联接
  4. Angular学习记录一
  5. C++ 关于方法传值
  6. Xcode 3.2.5免证书开发调试[转]
  7. Python高级特性:切片
  8. 浅谈 instanceof 和 typeof 的实现原理
  9. 由浅入深laravel教程 :中间件
  10. 哈佛教授公开R语言源码,教你用R制作gif动图