java interface接口和多继承[通俗易懂]

java interface接口和多继承[通俗易懂]很长时间不能很好解释多继承,今天看到一个特别好的解释,大快! 以下是引用:我认为你好像是不明白接口怎么用?也就是不明白为什么要定义那么多接口然后再用类去一个个继承他们。我跟你举个游戏的例子吧:这里有一个游戏,人猿泰山。主角是一个单独的类,这里我们主要用怪物说明接口的用法:怪物有很多种,按地域分:有的在天上飞,有的在地上跑,有的在水里游按攻击方式分:有的能近距离物理攻击,有的能

大家好,又见面了,我是你们的朋友全栈君。

很长时间不能很好解释多继承,今天看到一个特别好的解释,大快!
大笑
 
以下是引用:
我认为你好像是不明白接口怎么用?也就是不明白为什么要定义那么多接口然后再用类去一个个继承他们。我跟你举个游戏的例子吧:

这里有一个游戏,人猿泰山。

主角是一个单独的类,这里我们主要用怪物说明接口的用法:

怪物有很多种,

按地域分:有的在天上飞,有的在地上跑,有的在水里游

按攻击方式分:有的能近距离物理攻击,有的能远距离射击

假设游戏里需要这样的几种怪——

野狗:地上移动,近距离攻击

黑熊:地上移动,近/远距离攻击

秃鹫:地上/天上移动,远距离攻击

食人鱼:水中移动,近距离攻击

鳄鱼:地上/水中移动,近距离攻击

显然,如果我们将每一种怪物定义为一个类,那就不是面向对象的程序开发了,我们应当使用接口:

interface OnEarth{//陆地接口

int earthSpeed;//陆地移动速度

void earthMove();//陆地移动方法

}

interface OnWater{//水中接口

int waterSpeed;//水中移动速度

void waterMove();//水中移动方法

}

interface OnAir{//空中接口

int airSpeed;//水中移动速度

void airMove();//水中移动方法

}

interface NearAttack{//近距离攻击接口

int nearAttackPower;//近距离攻击力

void nearAttack();//近距离攻击方法

}

interface FarAttack{//远距离攻击接口

int farAttackPower;//远距离攻击力

void farAttack();//远距离攻击方法

}

这样一来,根据需求,我们可以选择性的继承接口:

class Tyke implements OnEarth, NearAttack{//野狗类

void earthMove(){//实现继承的方法1

}

void nearAttack(){//实现继承的方法2

}

}

class BlackBear implements OnEarth, NearAttack, FarAttack{//黑熊类

void earthMove(){//实现继承的方法1

}

void nearAttack(){//实现继承的方法2

}

void farAttack(){//实现继承的方法3

}

}

class Vulture implements OnEarth, OnAir, FarAttack{//秃鹫类

void earthMove(){//实现继承的方法1

}

void airMove(){//实现继承的方法2

}

void farAttack(){//实现继承的方法3

}

}

class ManeatFish implements OnWater, NearAttack{//食人鱼类

void waterMove(){//实现继承的方法1

}

void nearAttack(){//实现继承的方法2

}

}

class Crocodile implements OnEarth, OnWater, NearAttack{//鳄鱼类

void earthMove(){//实现继承的方法1

}

void waterMove(){//实现继承的方法2

}

void nearAttack(){//实现继承的方法3

}

}

在实现接口方法的同时,也拥有了接口中定义的成员变量,这样就构成了一个有机的整体,使整个程序既体现了类的多样性,又不失结构组合的灵活性,且需要在某个特性增加其他功能,只要修改接口就可以了,其继承的类自动修改。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160485.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月16日 下午7:46
下一篇 2022年7月16日 下午8:00


相关推荐

  • Node-RED简介

    Node-RED简介Node RED 是构建物联网 IOT InternetofTh 应用程序的一个强大工具 其重点是简化代码块的 连接 以执行任务 它使用可视化编程方法 允许开发人员将预定义的代码块 称为 节点 Node 连接起来执行任务 连接的节点 通常是输入节点 处理节点和输出节点的组合 当它们连接在一起时 构成一个 流 Flows Node RED 最初是 IBM 在 2013 年末开发的一个开源项

    2026年3月18日
    1
  • Seedance 2.0 最全上手指南:4 大入口、火爆玩法、详细提示词都在这

    Seedance 2.0 最全上手指南:4 大入口、火爆玩法、详细提示词都在这

    2026年3月12日
    2
  • 反射型XSS的利用「建议收藏」

    反射型XSS的利用「建议收藏」反射型XSS:用户输入的恶意代码,被执行。利用:它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。以前一直觉得反射型XSS危害不大,只能自己在客户端玩玩,实现弹窗。没想到,反射型XSS的利用比存储型还更容易,存储型XSS的利用还需结合CSRF.这篇博客很好的讲述了反射型XS…

    2022年5月4日
    100
  • Linux 内核编译(三天吐血经历!)[通俗易懂]

    Linux 内核编译(三天吐血经历!)[通俗易懂]写在前面的话:本人大二,东南大学一个软工狗,正在修一门名为《操作系统原理》的坑爹课!前几天做一个实验:编译Linux内核并向其增加一个系统调用。这个实验实在是太让人无语了,各种坑!昨天这个时候,我还在苦苦煎熬中。在今天凌晨四点才做好。为了让其他人少走一些弯路,鄙人就把自己的经验以及教训写下来。里面会有一些不足,希望大家多多指教~废话不多说,那就开始吧:一、实验前的准备:Vm

    2022年7月23日
    17
  • MySQL主从复制配置[通俗易懂]

    MySQL主从复制配置[通俗易懂]MySQL主从复制及读写分离一、MySQL复制的应用常见场景 读写分离,提高查询访问性能,有效减少主数据库访问压力。 实时灾备,主数据库出现故障时,可快速切换到从数据库。 数据汇总,可将多个主数据库同步汇总到一个数据库中,方便数据统计分析。 二、MySQL主从复制原理介绍1、MySQL异步和半同步复制传统的MySQL复制提供了一种简单的主-从复制方法。有一个主,以及一个或多个从。主节点执行和提交事务,然后将它们(异步地)发送到从节点,以重新…

    2022年8月13日
    7
  • 告别“降智编程”:Claude Code 终极指南与平替方案

    告别“降智编程”:Claude Code 终极指南与平替方案

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号