方法的覆盖

【转载】类继承时方法覆盖问题。(static方法不能被”覆盖“)

 (2014-04-03 17:51:17)
转载
  
在看TIJ4的144页说: “覆盖”只有在某方法是基类的接口的一部分时才会出现。 即,必须能将一个对象向上转型为他的基本类型并调用相同的方法。 如果某方法是private(所有private方法都隐式地指定为final),他就不是基类接口的一部分。 自然就没有“覆盖”一说。   

       对于private方法,除了把它看成是因为他所归属的类的组织结构的原因而存在外,其他任何事物都不需要考虑到他。

 

====================================================================================================

 

在子类继承父类时,形构相同(返回值,方法名,参数都相同)的方法会被覆盖。  但这是有前提的,他针对的是实例方法,像static这样的方法就不能被”覆盖“。

     根据Java   Language   Specification  的描述,子类在继承父类时,对于方法而言,存在两种关系: 
     1.override即覆盖,这是对实例方法(instance   method)而言的;子类与父类中形构相同的方法会override父类中的那个方法。 

    2. hide  即隐藏,这是对类方法(class   method)即static方法而言的。如果子类中定义了静态方法,则它会隐藏父类中形构相同的所有方法,但如果隐藏了父类中的实例方法,则会编译报错。   

     根据上面的规定,“override覆盖”的前提是   实例方法,只有实例方法在继承时才会出现override情况。 如果是static方法,在继承时出现的现象根本就不能用“override”这个词描述,如果static方法在父类和子类中形构一致,则被成为 hide(隐藏)

那什么是隐藏呢?隐藏 :child隐藏了parent的变量和方法,那么,child实例就不能访问parent中被隐藏的变量或者方法,但是,将child实例向上提升转换成parent,可以访问parent中被隐藏的变量或者方法了。 我的理解是被隐藏的东西就是只和类绑定的东西。当子类继承父类,在子类对象中是访问不到父类中的被隐藏的东西的。因为这些东西只和父类绑定了。

      在从动态绑定的角度来看看这个覆盖问题,因为static方法是类方法,实现时是静态绑定的(引用“JAVA   核心技术   卷1   第六版”中149页内容“private、static、final”修饰的方法是静态绑定的,所以他们修饰的方法不能实现多态,当然不需要被子类覆盖了(子类覆盖父类方法是为了实现多态)。而其他的方法在运行时动态绑定。 同时,所有的变量也都是静态绑定的。

   看个简单的例子:

  1. package com.Test;  
  2.   
  3. public class StaticTest {  
  4.     public static void main(String[] args) {  
  5.         A a = new B();  
  6.         a.f1();  
  7.         a.f2();  
  8.     }  
  9. }  
  10.   
  11. class A {  
  12.   
  13.     public static void f1() {  
  14.         System.out.println("hello! A");  
  15.     }  
  16.   
  17.     public void f2() {  
  18.         System.out.println("hello ! A");  
  19.     }  
  20.       
  21. }  
  22.   
  23. class B extends A {  
  24.   
  25.     public static void f1() {  
  26.         System.out.println("hello! B");  
  27.     }  
  28.   
  29.     public void f2() {  
  30.         System.out.println("hello! B");  
  31.     }  
  32.       
  33. }  

output: hello!A

         hello!B

补充一句:在类继承中,方法分为覆盖和隐藏,而类中的变量则都是隐藏的,即变量(不管是静态变量还是普通变量)都是跟类绑定的。

转载于:https://www.cnblogs.com/xuwangqi/p/11172160.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

恋与制作人 服务器错误,恋与制作人安装失败怎么办_恋与制作人安装失败解决方法_游戏吧...

恋与制作人是一款受到了很多玩家喜爱的游戏,游戏是奇迹暖暖原班人马打造的,但是却有玩家在安装时出现了安装失败的问题。下面游戏吧小编就为各位各位玩家带来了恋与制作人的安装失败解决方法。安装失败解决方法一、 安装软件时提示应用程序未安装或者提示…

create-react-app创建项目后运行npm run eject命令报错解决办法

用create-react-app创建项目,因要配置各种组件,比如babel,antd等, 需要运行npm run eject命令把项目的配置文件暴露出来,但是还是一如既然碰到报错,因为是在本地新创建的文件,没有添加git记录 解决办法&…

wps的计算机在哪里设置密码,wps文件怎么设置和取消密码 wps文件密码设置和取消的步骤方法...

在wps制作文件时,有时候我们需要中途离开,但是担心其他用户不小心操作导致文件丢失,那么我们可以设置wps文件密码,这样就可以避免了,那么怎么将wps文件设置密码呢?其实设置方法非常简单,下面教程之家网为大…

魔兽世界联盟物价稳定的服务器,一个残酷的真相!在《魔兽世界》怀旧服,女生一般都爱选联盟...

原标题:一个残酷的真相!在《魔兽世界》怀旧服,女生一般都爱选联盟随着《魔兽世界》经典旧世的人气渐涨,暴雪又追加了3组PVP服,让不少没能抢注到心仪昵称的玩家欣喜若狂。这样一来,原本就饱受争议的服务器选…

SQL Server 2005 Hierarchies WITH Common Table Expressions

代码 1 createtableEmployee2 (3 Id INTIDENTITY(1,1) PRIMARYKEY, 4 [Name]varchar(30) null, 5 JobTitle varchar(30) null, 6 Manager intnull7 )8 9 insertEmployee10 selectincf, IT Director,nullunionall11 selectinc3, Finance Director,nullunionall12 select…

安卓导航无信号无服务器,无信号导航能用否

● 出发前测试为解析导航不准的原因,我们先来了解一下GPS导航原理。导航仪是通过接受GPS信号来确定位置所在,再通过存储于内存中的地图数据规划路线。在车辆行驶时,导航仪通过不断接受GPS信号来检测车辆所在地状态,从而提示指引信…

NTC热敏电阻基础以及应用和选择(转)

源:NTC热敏电阻基础以及应用和选择 NTC被称为负温度系数热敏电阻,是由Mn-Co-Ni的氧化物充分混合后烧结而成的陶瓷材料制备而来,它在实现小型化的同时,还具有电阻值-温度特性波动小、对各种温度变化响应快的特点,可被用…

MSN无法登陆,服务暂时不可用(错误码:80048051)

好几次MSN突然就登陆不了,一次是改了系统时间,这个好办,你改成当前日期时间即可; 还有一个可能就是脱机工作: 請依照以下步驟進行除錯: 1. 關閉Windows Live Messenger 先關閉你的MSN,在右下角找…

Java基础教程——线程通信

线程通信:等待、唤醒 Object方法这些方法在拥有资源时才能调用notify唤醒某个线程。唤醒后不是立马执行,而是等CPU分配wait等待,释放锁,不占用CPU资源notifyAll唤醒全部等待的线程重点:资源的有效利用 生产一个&#x…

cad画直角命令_炸了,CAD fro命令配合tk命令,极轴追踪无敌!

文尾左下角阅读原文看视频教程好课推荐:零基础CAD:点我CAD室内:点我 周站长CAD:点我CAD机械:点我 Bim教程:点我CAD建筑:点我CAD三维:点我全屋定制:点我 ps教程&#xff1…

025 程序的循环结构

目录 一、概述二、遍历循环三、遍历循环的应用3.1 计数循环(N次)3.2 计数循环(特定次)3.3 字符串遍历循环3.4 列表遍历循环3.5 文件遍历循环四、无限循环五、循环控制保留字5.1 break 和 continue5.1.1 for5.1.2 while六、循环的高级用法6.1 循环的扩展6.1.1 for6.1.2 while七、…

灰度值怎么降级_微服务生态的灰度发布如何实现?

前言相信很多小伙伴们都听说过灰度发布,但是不一定知道如何实现?今天我们就介绍一下基本原理,以及提供代码实现给小伙伴们。灰度概念即原来的生产环境是1.0版本,那现在我们需要升级到2.0版本,但是我们需要验证2.0版本&…

在电脑上显示未知发布者怎么办_笔记本电脑显示器花屏怎么办?电脑屏幕花屏的解决方法...

笔记本电脑显示器花屏怎么办?笔记本电脑屏幕花屏该如何解决呢?近日有用户反映在使用笔记本电脑时候,会出现花屏的问题,下面就给大家介绍具体解决方法。一:检查显示器与显卡的连线是否松动若显示屏花屏的话,…

mongodb 字段出现次数_MongoDB数据库

内容回顾Xpath选择器不要求记忆,只要混个眼熟即可基于openpyxl模块爬取豆瓣电影单页爬取多页爬取1.校验请求头里面是否有User-Agent参数 请求头里面加上即可2.限制IP规定时间内的访问次数 1.人为的加上时间延迟 在你的程序里面加上time.sleep()让你的程序间歇一段时…

相似三角形·中考

概述相似,主要是相似三角形,在中考中有举足轻重的地位,难度也较高,往往倒三题中至少有一题是圆和相似的结合相似常常和四边形、反比例函数、圆、二次函数等结合,十分灵活 比例性质 概念若$\displaystyle \frac{a}{b}\f…

php 对接 北向数据接口 socket

function encode($msgType, $timeStamp, $body) {return "\xFF\xFF".pack(CNn, $msgType, $timeStamp, strlen($body)).$body;}$connection->send(encode(1, time(), reqLoginAlarm;userxxx;keyxxx;typexxx)); 详情参考: 请教使用socket做为客户端和北向接口对接&…

RHEL7单独安装图形X11

RHEL7 默认是最小化安装(Minimal Install),没有图形界面,我们应该选择Server with GUI。若已错过此步骤,我们采用以下方式补充安装GUI界面。 # yum group list Available Environment Groups:Minimal InstallCompute N…

485通讯线是几芯的_小令老师说门禁| 为什么485门禁必然会取代韦根?

韦根和485(RS485)是两种不同的通讯协议。通讯协议解决的是通讯双方数据如何传输和如何控制的问题。对于门禁而言,指的是读头和控制器之间的通讯。传统门禁很多采用韦根通讯方式,而现在485更为普及,大部分韦根门禁也完成…

epoll nio区别_大厂面试系列(二)::NIO和Netty

NIO和Netty面试题 NIO 阐述 NIO原理?BIO/NIO/AIO有什么区别?有那些实现?讲讲NIO的原理与实现?NIO用到了哪个经典技术思想?JDK1.8中NIO有做什么优化了解多路复用机制 常见问题 同步阻塞、同步非阻塞、异步的区别&#x…

拦截地址栏参数_selenium操作chrome时的配置参数

参数说明:about:version - 显示当前版本about:memory - 显示本机浏览器内存使用状况about:plugins - 显示已安装插件about:histograms - 显示历史记录about:dns - 显示DNS状态about:cache - 显示缓存页面about:gpu -是否有硬件加速about:flags -开启一些插件 chrome…