动态绑定机制使得基类的引用能够指向正确的子类对象,从而使得面向基类编程成为可能。

然而动态绑定在以下两种情况会失效。

1、基类方法是private或final修饰的

这个很好理解,因为private说明该方法对子类是不可见的,子类再写一个同名的方法并不是对父类方法进行复写(Override),而是重新生成一个新的方法,也就不存在多态的问题了。同理也可以解释final,因为方法同样是不可覆盖的。

2、方法是static修饰的

代码如下所示.

class Base {

public static void staticMethod() {

System.out.println("Base staticMehtod");

}

public void dynamicMehtod() {

System.out.println("Base dynamicMehtod");

}

}

class Sub extends Base {

public static void staticMethod() {

System.out.println("Sub staticMehtod");

}

public void dynamicMehtod() {

System.out.println("Sub dynamicMehtod");

}

}

public class TJ4 {

public static void main(String args[]) {

Base c = new Sub();

c.staticMethod();

c.dynamicMehtod();

}

}/* OutPut:

Base staticMehtod

Sub dynamicMehtod

*/

输出结果并不像设想的那样,输出 "Sub staticMehtod"。因为静态方法是与类而不是与某个对象相关联,c.staticMethod();等同于Car.staticMethod(); 所以尽量不要使用实例变量去调用静态方法,避免混淆。

以上这篇Java静态方法不具有多态性详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

java静态多态_Java静态方法不具有多态性详解相关推荐

  1. JAVA 静态变量,静态方法,main方法详解(韩顺平)

    目录 一.类变量 1.类变量的引入 2.类变量的定义 3.类变量的特点 4.如何定义类变量 5.如何访问类变量 6.类变量使用细节 二.类方法 1.基本介绍 2.定义类方法 3.类方法的访问 4.类方 ...

  2. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  3. java observer模式_Java观察者模式(Observer)详解及应用

    Java观察者模式(Observer)详解及应用 (2011-12-15 14:03:30) 标签: 杂谈 Java观察者模式(Observer)详解及应用 由于网站带有弱sns功能,因此需要设计关注 ...

  4. java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等

    本文由朱益盛.杨晖.傅啸分享,来自IBM Developer社区,原题"使用 Java 开发兼容 IPv6 的网络应用程序",本次收录时有改动. 1.引言 前几天,有个群友跟我讨论 ...

  5. java闭合数据_java多线程中线程封闭详解

    线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...

  6. java 类参数_Java的数据类型和参数传递(详解)

    Java提供的数据类型主要分为两大类:基本数据类型和引用数据类型. Java中的基本数据类型 名称 大小 取值范围 byte型 (字节) 8bit -128-127 (-2^7到2^7-1) shor ...

  7. java linkedlist实例_Java Linkedlist原理及实例详解

    这篇文章主要介绍了Java Linkedlist原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定义:linkedlist属于链表结构 ...

  8. java多线程教程_java 基础教程之多线程详解及简单实例

    java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...

  9. java 链表逆转_java 实现单链表逆转详解及实例代码

    java 实现单链表逆转详解 实例代码: class Node { Node next; String name; public Node(String name) { this.name = nam ...

最新文章

  1. 【C++ 语言】线程安全队列 ( 条件变量 | 线程调度 )
  2. linux文件本编辑,Linux就该这么学 -- 命令 -- 文本文件编辑命令
  3. [转载] Linux里面的文件目录类指令
  4. 编程语言五花八门,哪种可以让程序员赚到更多钱?
  5. 大数据杀熟!用苹果手机怪我咯?
  6. 关于svn、git生成版本号脚本的再次改进
  7. [Java] 蓝桥杯 BEGIN-4 入门训练 Fibonacci数列
  8. 将List按照指定大小等分的几种实现方式和效率对比及优化
  9. 汉诺塔五层C语言程序,汉诺塔的c语言程序
  10. 2018最新qq的服务器地址,腾讯QQ2018正式版新功能详细介绍
  11. Android 开机logo支持的格式
  12. 3dmax、python3、Rational Rose、DTLite、commons-math3、VM12、DreamWeaver、SPSS、sqlserver2008、mySQL等软件安装包最全集合
  13. 戴尔计算机网卡驱动程序,dell戴尔网卡驱动如何安装
  14. AutoCAD 2019 for mac汉化版
  15. RGMII2GMII 分析
  16. 什么是 MySQL 索引?
  17. 统计push点击次数的shell脚本版本2
  18. Excel 录制宏 - 制作工资条
  19. 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧
  20. Vegas怎么制作古装墨迹笔刷开场效果

热门文章

  1. leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)
  2. leetcode 785. Is Graph Bipartite? | 785. 判断二分图(DFS,地图着色)
  3. P8-07-16 使用 Jenkins 自动构建 Maven 项目
  4. 【Spring】总结Spring整合Mybatis的底层原理实现步骤
  5. 【JSP/Servlet】getParameter和getAttribute的使用、区别
  6. Scala的自定义类型标记
  7. Leet Code OJ 102. Binary Tree Level Order Traversal [Difficulty: Easy]
  8. 计算机网络基础期中测试题,计算机网络基础期末考试试题
  9. java每秒执行一次_Java性能权威指南
  10. python中bs4_python bs4库