java静态多态_Java静态方法不具有多态性详解
动态绑定机制使得基类的引用能够指向正确的子类对象,从而使得面向基类编程成为可能。
然而动态绑定在以下两种情况会失效。
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静态方法不具有多态性详解相关推荐
- JAVA 静态变量,静态方法,main方法详解(韩顺平)
目录 一.类变量 1.类变量的引入 2.类变量的定义 3.类变量的特点 4.如何定义类变量 5.如何访问类变量 6.类变量使用细节 二.类方法 1.基本介绍 2.定义类方法 3.类方法的访问 4.类方 ...
- java lombok 视频_Java开发神器Lombok使用详解
最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...
- java observer模式_Java观察者模式(Observer)详解及应用
Java观察者模式(Observer)详解及应用 (2011-12-15 14:03:30) 标签: 杂谈 Java观察者模式(Observer)详解及应用 由于网站带有弱sns功能,因此需要设计关注 ...
- java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等
本文由朱益盛.杨晖.傅啸分享,来自IBM Developer社区,原题"使用 Java 开发兼容 IPv6 的网络应用程序",本次收录时有改动. 1.引言 前几天,有个群友跟我讨论 ...
- java闭合数据_java多线程中线程封闭详解
线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...
- java 类参数_Java的数据类型和参数传递(详解)
Java提供的数据类型主要分为两大类:基本数据类型和引用数据类型. Java中的基本数据类型 名称 大小 取值范围 byte型 (字节) 8bit -128-127 (-2^7到2^7-1) shor ...
- java linkedlist实例_Java Linkedlist原理及实例详解
这篇文章主要介绍了Java Linkedlist原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定义:linkedlist属于链表结构 ...
- java多线程教程_java 基础教程之多线程详解及简单实例
java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...
- java 链表逆转_java 实现单链表逆转详解及实例代码
java 实现单链表逆转详解 实例代码: class Node { Node next; String name; public Node(String name) { this.name = nam ...
最新文章
- 【C++ 语言】线程安全队列 ( 条件变量 | 线程调度 )
- linux文件本编辑,Linux就该这么学 -- 命令 -- 文本文件编辑命令
- [转载] Linux里面的文件目录类指令
- 编程语言五花八门,哪种可以让程序员赚到更多钱?
- 大数据杀熟!用苹果手机怪我咯?
- 关于svn、git生成版本号脚本的再次改进
- [Java] 蓝桥杯 BEGIN-4 入门训练 Fibonacci数列
- 将List按照指定大小等分的几种实现方式和效率对比及优化
- 汉诺塔五层C语言程序,汉诺塔的c语言程序
- 2018最新qq的服务器地址,腾讯QQ2018正式版新功能详细介绍
- Android 开机logo支持的格式
- 3dmax、python3、Rational Rose、DTLite、commons-math3、VM12、DreamWeaver、SPSS、sqlserver2008、mySQL等软件安装包最全集合
- 戴尔计算机网卡驱动程序,dell戴尔网卡驱动如何安装
- AutoCAD 2019 for mac汉化版
- RGMII2GMII 分析
- 什么是 MySQL 索引?
- 统计push点击次数的shell脚本版本2
- Excel 录制宏 - 制作工资条
- 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧
- Vegas怎么制作古装墨迹笔刷开场效果
热门文章
- leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)
- leetcode 785. Is Graph Bipartite? | 785. 判断二分图(DFS,地图着色)
- P8-07-16 使用 Jenkins 自动构建 Maven 项目
- 【Spring】总结Spring整合Mybatis的底层原理实现步骤
- 【JSP/Servlet】getParameter和getAttribute的使用、区别
- Scala的自定义类型标记
- Leet Code OJ 102. Binary Tree Level Order Traversal [Difficulty: Easy]
- 计算机网络基础期中测试题,计算机网络基础期末考试试题
- java每秒执行一次_Java性能权威指南
- python中bs4_python bs4库