Java的函数的奇怪重载是什么
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇文章给大家分享的是有关Java的函数的奇怪重载是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。大家都知道,Java中的类只能继承
千家信息网最后更新 2025年11月08日Java的函数的奇怪重载是什么
本篇文章给大家分享的是有关Java的函数的奇怪重载是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
大家都知道,Java中的类只能继承一个父类,但是可以实现多个接口。之所以这样,据说是因为多重继承的概念比较混乱。但是,多接口实现会出现更加混乱的问题。
1. 如果一个类实现了两个接口,但是两个接口中有签名一致的函数,怎么办?
实际上,在同一个函数中,只能有一个签名一致的函数。如下:
interface ClickListener { void fire(); } interface TouchListener { void fire(); } class Button implements ClickListener, TouchListener { @Override public void fire() { // ... } }两个Listener的对fire的调用,都会指向同一个函数。
2. 在1的基础上,如果Button的父类已经有一个签名一致的函数。如下:
interface ClickListener { void fire(); } interface TouchListener { void fire(); } class ButtonBase { public void fire() { // ... } } class Button extends ButtonBase implements ClickListener, TouchListener { }那么此时Button中可以不存在任何函数。两个Listener的对fire的调用,都会指向ButtonBase中的函数。奇怪么?
这种奇怪的做法和C++中的"复杂"多重继承相比,在被调用函数中完全不知道调用来自哪个Listener触发,无法根据不同的来源做不同的处理。更加变态的是,如果两个Listener中的函数只有返回值不一样的时候--对不起,悲剧了--你不能同时实现这两个接口--因为编译器不支持。
但是,这种奇怪的做法也有其实际的用途,请看下例:
/* public interface */ public interface Animal { void run(); } /* internal class */ private class Dog { @Override void run() { // ... } } /* public interface */ public FlyAnimal extends Animal { void fly(); } /* internal class */ private class FlyDog extends Dog implements FlyAnimal { @Override void fly() { // ... } }我只能说,Java太凶残了。
以上就是Java的函数的奇怪重载是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
函数
两个
接口
一致
不同
混乱
做法
实际
指向
更多
知识
篇文章
凶残
复杂
实用
之所以
变态
只有
同时
基础
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
方舟创建非专用服务器
c软件开发实习心得简历
杭州网络安全工资待遇
腾讯服务器一直重启中怎么办
求生之路服务器大全
大数据库思维方式是什么
怎么matlab做软件开发
网络安全本科生就业
数据库索引多少种
2012 vpn服务器
IPTV电视直播软件开发
黑龙江网络安全视频
乐词数据库加载失败
网络技术自我鉴定怎么写
湖南洛创互联网科技有限公司
游戏软件开发学什么专业好
网络安全日宣传形式
湖南服务器ups不间断电源
数据库用户确认失败
cad中的模块数据库
五年日记软件开发
青岛培训软件开发平台
潍坊服务器
海南水果蔬菜配送软件开发
浩扬瀚软件开发工作室
云服务器的存储优化
批发业可以做软件开发吗
国内专业的聊天软件开发
数据库系统原理习题答案
2017网络安全法 延期