博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pitfall override private method
阅读量:6293 次
发布时间:2019-06-22

本文共 1038 字,大约阅读时间需要 3 分钟。

hot3.png

public class Override_private_pitfall { private void f() { /** * Exception : java.lang.StackOverflowError */ Override_private_pitfall.main(new String[]{}); System.out.println("private f();"); } public static void main(String[] args) { Override_private_pitfall opp = new Detial(); /** *error: The method f1() is undefined for the type Override_private_pitfall */ opp.f1(); Detial detial = (Detial)opp; /** * output: public f(); */ detial.f(); /** * output: public f1(); */ detial.f1(); /** *  output : private f(); */ opp.f(); }}class Detial extends Override_private_pitfall { public void f1() { System.out.println("public f1();"); } public void f() { System.out.println("public f();"); }}

动态绑定陷阱:

private 方法隐式是final的;不能重载;static和final的方法不会动态绑定,或者说运行时绑定;

so Detial's f() in this case is a brand new method; it's not even overload, since the base-class version of f() isn't visible in Detial.

to be clear you should use a different name from a prative base-class method in your dervied class.

转载于:https://my.oschina.net/u/782865/blog/191073

你可能感兴趣的文章
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>