java接口菱形继承

2023-10-27

其实菱形继承的副作用只是因为公共基类的成员变量
Java的接口可以做出类似菱形继承的结构,但因为公共基类(接口?)中没有成员变量,所以没有二义性问题啦

当然也可以使用内部类(嵌套类)来实现类似多继承,不必担心会发生钻石危机,因为用内部类实现多继承过程中由设计者重新进行函数命名,从而避免了钻石危机。下面用代码来进行说明:

      要继承的类 Father。
    
public class Father {
    public void output() {
        System.out.println("father");
    }
}


       要继承的类 Mother。
    
public class Mother {
    public void output() {
        System.out.println("mother");
    }
}



   类 Son 同时继承了 Father 和 Mother 的 output() 方法的实现。
    
public class Son {
    class Father_son extends Father {
 
    }
 
    class Mother_son extends Mother {
 
    }
 
    public void father() {
        (new Father_son()).output();
    }
 
    public void mother() {
        (new Mother_son()).output();
    }
}

       测试类 MainTest。
    
public class MainTest {
    public static void main(String[] args) {
        Son test = new Son();
        test.father();
        test.mother();
    }
}



       测试结果如下:
    father
    mother
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java接口菱形继承 的相关文章

随机推荐

  • 升级Flutter 3.13.x 之后出现watcher-1.0.2报错

    Failed to build intl utils generate pub cache hosted pub flutter io cn watcher 1 0 2 lib src constructable file system e
  • mesa编译

    0 准备工作 sudo apt get install git autoconf libtool dpkg dev quilt debhelper 1 libdrm编译 下载 git clone http anongit freedeskt
  • 彻聊DNS

    先得聊聊什么是域名 域名是什么 我会连域名都不知道 别着急 先看看嘛 我们以www fanyi baidu com为例 域名结构划分为根域名 顶级域名 二级域名 三级域名等 做过开发的都知道 在创建项目时 一般是com xxx xxx 这就
  • 【毕业设计】大数据用户画像数据分析系统 - python

    文章目录 1 前言 2 用户画像分析概述 2 1 用户画像构建的相关技术 2 2 标签体系 2 3 标签优先级 3 实站 百货商场用户画像描述与价值分析 3 1 数据格式 3 2 数据预处理 3 3 会员年龄构成 3 4 订单占比 消费画像
  • 设计模式之单例模式(通俗易懂,超详细)

    1 什么是单例模式 单例模式 属于创建类型的一种常用的软件设计模式 通过单例模式的方法创建的类在当前进程中只有一个实例 根据需要 也有可能一个线程中属于单例 如 仅线程上下文内使用同一个实例 百度百科 简单来说单例模式就是指在内存中只会创建
  • 简单几个配置 Go 实现敏感数据脱敏,可以自定义数据脱敏规则(附完整实现源码)

    简单几个配置 Go 实现敏感数据脱敏 可以自定义数据脱敏规则 附完整实现源码 介绍 为了保障企业的数据安全和隐私安全 godlp 提供了一系列针对敏感数据的识别和处置方案 其中包含敏感数据识别算法 数据脱敏处理方式 业务自定义的配置选项和海
  • c当中宏理解

    宏 Macro 是预处理命令的一种 它允许用一个标识符来表示一个字符串 include
  • STM32F429配置MircoPython的SDRAM参数

    本例使用的开发板是正点原子STM32F429 一 修改mpconfigboard h文件 具体配置如下 SDRAM define MICROPY HW SDRAM SIZE 32 1024 1024 32M Bytes define MIC
  • 拉格朗日对偶

    https www cnblogs com ooon p 5723725 html
  • Ngrok 服务搭建

    一 前言 ngrok 是一个反向代理 通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道 ngrok 可捕获和分析所有通道上的流量 便于后期分析和重放 ngrok一条命令可以解决外网访问内网问题 本地WEB外网访问 本地开发
  • Nginx的安装(Ubuntu)以及常用简介

    目录 Nginx安装 安装前提 源码下载 Nginx安装方式 简单说明nginx目录下的内容 Nginx编译和安装 启动 Nginx安装 安装前提 gcc pcre库 函数库 支持解析正则表达式 apt get install libpcr
  • 快速学习Stm32舵机控制板控制一个舵机运动

    PWM是什么 PWM 英文名Pulse Width Modulation 是脉冲宽度调制缩写 它是通过对一系列脉冲的宽度进行调制 等效出所需要的波形 包含形状以及幅值 对模拟信号电平进行数字编码 也就是说通过调节占空比的变化来调节信号 能量
  • 域名到站点的负载均衡技术一览

    一 问题域 nginx lvs keepalived f5 DNS轮询 往往讨论的是接入层的这样几个问题 1 可用性 任何一台机器挂了 服务受不受影响 2 扩展性 能否通过增加机器 扩充系统的性能 3 反向代理 负载均衡 请求是否均匀分摊到
  • QComboBox样式表 下拉框 QSS 样式表

    注意 QComboBox pComboBox new QComboBox this pComboBox gt setView new QListView 添加这句 设置下拉列表项高才能生效 未下拉时 QComboBox的样式 QComboB
  • Kubernetes下载kube-flannel失败解决方案 大数据

    Kubernetes下载kube flannel失败解决方案 大数据 Kubernetes是一个开源的容器编排平台 而kube flannel是Kubernetes集群中广泛使用的网络插件 用于提供容器之间的网络互通 然而 有时候在下载ku
  • Socket通讯工具类【SocketTools】(20140402修订版)

  • error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/

    error pulling image configuration Get https production cloudflare docker com registry v2 docker 原因 使用docker拉取镜像失败 解决方法 在
  • socket 网络通信 ( windows + Linux )

    参考 C socket 网络通信等 Socket 编程 socket起源于Unix 而Unix Linux基本哲学之一就是 一切皆文件 都可以用 打开open gt 读写write read gt 关闭close 模式来操作 Socket就
  • springboot 连接数据库失败取消自动重试,DruidDataSource取消自动重试

    默认是无限自动重试 导致程序卡死 那么如果我不想让它重试呢 方案1 application properties里面添加即可 spring datasource druid break after acquire failure true
  • java接口菱形继承

    其实菱形继承的副作用只是因为公共基类的成员变量 Java的接口可以做出类似菱形继承的结构 但因为公共基类 接口 中没有成员变量 所以没有二义性问题啦 当然也可以使用内部类 嵌套类 来实现类似多继承 不必担心会发生钻石危机 因为用内部类实现多