java 二义性_Java接口默认方法带来的问题分析【二义性问题】
本文实例分析了Java接口默认方法带来的问题。分享给大家供大家参考,具体如下:
一 点睛
Java 8中,如果一个类实现两个或多个接口,即“变相”的多继承,但是若其中两个接口都包含一个名字相同的default方法,会出现二义性问题。
二 实战
1 代码
interface faceA //定义接口faceA
{
void someMethod( );
default public void DefaultMethod( )//定义接口中默认方法
{
System.out.println("Default method in the interface A");
}
}
interface faceB //定义接口faceB
{
default public void DefaultMethod( )//定义接口InterfaceB中同名的默认方法
{
System.out.println("Default method in the interface B");
}
}
class DefaultMethodClass implements faceA,faceB //定义子类实现接口InterfaceA, InterfaceB
{ public void someMethod( ) //实现接口InterfaceA的抽象方法
{
System.out.println("Some method in the subclass");
}
}
public class Interfacsamedefaults
{
public static void main(String[] args)
{
DefaultMethodClass def = new DefaultMethodClass( );
def.someMethod(); //调用抽象方法
def.DefaultMethod(); //调用默认方法
}
}
2 运行
3 说明
实例化子类DefaultMethodClass的对象时,编译器不知道应该在两个同名的default方法中选择哪一个,因此产生了二义性。因此,一个类实现多个接口时,若接口中有默认方法,不能出现同名的方法。
Java之所以禁止多继承,就是想避免类似的二义性。但是接口中允许实现默认方法,又回到“二义性”的灾难之门。
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
java 二义性_Java接口默认方法带来的问题分析【二义性问题】相关推荐
- java 代码 二义性是什么_Java接口默认方法带来的问题分析【二义性问题】
本文实例分析了Java接口默认方法带来的问题.分享给大家供大家参考,具体如下: 一 点睛 Java 8中,如果一个类实现两个或多个接口,即"变相"的多继承,但是若其中两个接口都包含 ...
- Java 8 - Interface Default Method接口默认方法
Java 8 相比于Java 7 推出了几大特色(features)(接口默认方法)default methods in interface, (接口静态方法)static method in int ...
- java接口的默认方法,实现类调用接口默认方法
概述 Java8带来了一些全新的特性,包括lambda表达式.函数接口.方法引用.流.可选方法.接口中的静态方法和默认方法. 在本文中,我们将深入讨论为什么java8接口新增了默认方法,如何使用默认方 ...
- 接口默认方法是什么鬼
接口之所以成为接口,就在于它没有实现,只是声明.但后来一切都变了,Java 里出现了默认方法,C# 也出现了默认方法.接口已经不像传统意义上的接口,其概念开始向抽象类靠近,一个纯抽象的东西,突然出现了 ...
- Java8 - 接口默认方法
2019独角兽企业重金招聘Python工程师标准>>> Java8 - 接口默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法 ...
- java8新特性_乐字节-Java8新特性-接口默认方法
总概 JAVA8 已经发布很久,而且毫无疑问,java8是自java5(2004年发布)之后的最重要的版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性. Java8 新特性列表如下: 接 ...
- JDK8新特性之接口默认方法与静态方法
接口默认方法与静态方法 有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题. 接口静态 ...
- jdk8 接口默认方法_JDK 8中方便的新地图默认方法
jdk8 接口默认方法 Map接口在JDK 8中提供了一些方便的新方法 . 因为我在本文中介绍的Map方法是作为默认方法实现的,所以Map接口的所有现有实现都享有在默认方法中定义的默认行为,而无需任何 ...
- Java 8中的默认方法(Defender方法)简介
我们都知道Java中的接口仅包含方法声明,而没有实现,并且任何实现该接口的非抽象类都必须提供实现. 让我们看一个例子: public interface SimpleInterface {public ...
最新文章
- 微信小程序下拉刷新真机无法弹回
- php 类中的各种拦截器
- python framework jdon_一天学会Python Web框架(十二)产品管理
- 每个人都应该知道的15个大数据术语
- MySQL常用函数 二
- IDEA单机,双人五子棋
- 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤
- OAUS自动升级系统
- python爬虫(爬取王者荣耀英雄图片)
- 时间单位:s cs ms us ns ps fs as zs js ys 普朗克
- 领域驱动设计详解:是什么、为什么、怎么做?
- Python 快速入门学习总结
- 我们诚心诚意的给射手座挑选了两款礼物,希望还来得及丨钛空智慧星球
- 报错: TypeError: Cannot read property ‘forceUpdate‘ of undefined
- python小游戏代码大全打枪-python实现微信小游戏打飞机代码
- 机房收费系统 概要设计
- 我辞职了!“没有Python编程经验的我,连简历都不敢投”
- php-cs-fixer sublime,PHP-CS-Fixer 格式化php的代码
- JVM 双亲委派模型
- 银行贷款预测模型项目(Loan Prediction)(下)
热门文章
- 百度云盘照片导入华为相册里_怎么把云相册的照片导到手机相册里?
- Altium designer AD原理图导入word文档、pdf,生成矢量图的方法;
- 锂电池充电过程的四个阶段
- 八、在创业公司工作的心理历程
- 破解有道翻译js加密,纯小白练手
- Alibaba Cloud Toolkit —— 项目一键部署工具
- 【论文阅读】PatchmatchNet
- 前端“Wed, 22 Sep 2021 15:48:33 GMT“时间转换成“2021-09-22 15:48:33
- Oracle 如何删除控制文件中rman备份到磁带的备份集信息(RMAN-06091)
- 零基础学习之万物皆可GAN学习路线