前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java interface接口和多继承[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-09-13 10:11:03
6100
发布2022-09-13 10:11:03
举报
文章被收录于专栏:全栈程序员必看

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

很长时间不能很好解释多继承,今天看到一个特别好的解释,大快!

大笑
大笑

以下是引用:

我认为你好像是不明白接口怎么用?也就是不明白为什么要定义那么多接口然后再用类去一个个继承他们。我跟你举个游戏的例子吧: 这里有一个游戏,人猿泰山。 主角是一个单独的类,这里我们主要用怪物说明接口的用法: 怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游 按攻击方式分:有的能近距离物理攻击,有的能远距离射击

假设游戏里需要这样的几种怪—— 野狗:地上移动,近距离攻击 黑熊:地上移动,近/远距离攻击 秃鹫:地上/天上移动,远距离攻击 食人鱼:水中移动,近距离攻击 鳄鱼:地上/水中移动,近距离攻击

显然,如果我们将每一种怪物定义为一个类,那就不是面向对象的程序开发了,我们应当使用接口: 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.cn/160485.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档