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

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

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

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

java interface接口和多继承相关推荐

  1. Java中接口的多继承

    我们知道Java的类只能继承一个类,但可以实现多个接口.但是你知道么?Java中的接口却可以继承多个接口.本文就来说一说Java中接口的多继承. 进入主题之前,先扩展一下.Java为什么只支持单继承呢 ...

  2. java private 接口_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  3. 《Java程序设计》实验报告——Java的接口与继承

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

  4. java移动接口发短信_天天都会写接口(interface),但它的用途和好处有多少人能说得清楚?

    本文同步Java知音社区,专注于Java 作者:nvd11 http://blog.csdn.net/nvd11/article/details/41129935 一. 对接口的三个疑问 很多初学者都 ...

  5. java native 接口_Java本地接口--Java Native Interface (JNI)

    一.方法介绍 java native方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法. java中,通过JNI(Ja ...

  6. java 接口可以多继承

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 接口是常量值和方法定义的集合.接口是一种特殊的抽象类. java类是单继承的.classB Exte ...

  7. Java常见面试知识点:继承、接口、多态、代码块

    问题:Java常见面试知识点:继承.接口.多态.代码块 答案: 1.继承 继承中构造方法的访问特点 子类中所有的构造方法默认都会访问父类中无参的构造方法 为什么? • 子类在初始化的时候,有可能会使用 ...

  8. java接口中多继承的问题

    java中支撑多继承吗? 支持->接口啊 为什么接口支持多继承呢?因为接口中没有方法体!即使可能两个接口中有一样的抽象方法,但是 只会调用子类中覆盖该同样抽象方法的具体方法!不会引起调用的歧义! ...

  9. Java 中接口 interface 实例介绍

    接口(interface) 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值 ...

最新文章

  1. 深入浅出JVM的锁优化案例
  2. Eclipse 报java.lang.OutOfMemoryError: PermGen space
  3. rhel6.2 yum
  4. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
  5. five months plan
  6. 阿里云天池 Python训练营Task3: Python基础进阶:从函数到高级魔法方法 学习笔记
  7. 惹恼程序员的10件事
  8. CheckBox jsp+javaScript多项选择checkbox取值实现
  9. 通过ajax实现简单的数据交互(模板引擎)
  10. thinkphp 中英文语言包
  11. ff写法 图片_花体f怎么写
  12. win10安装VS2008失败解决方案
  13. ubuntu18.04 桌面不定时crash重置问题
  14. Anaconda从C盘移动到D盘
  15. 在html中什么标签可以显示小方块,css列表前的小方块
  16. 无法建立与远程计算机连接,解决“不能建立到远程计算机的连接,因此用于此...”的方法_常见问题解析...
  17. 制作ubuntu18.04启动盘 + 安装ubuntu18.04
  18. matlab 神经元系统,应用Matlab设计人工神经元网络控制系统
  19. bnu1079 BNUEP的球迷 C语言版
  20. 在Java中判断一个数是奇数还是偶数

热门文章

  1. linux 实时性 100ms,实时录播延迟长达100ms
  2. 如何正确选择python的版本
  3. c语言进阶编程 培训,大学C语言进阶编程实例.doc
  4. 你写一个web网页小游戏
  5. python功率谱,直接法和间接法
  6. 【转载】【UEFI学习】edk2中各个包介绍
  7. SetWinEventHook 事件钩子
  8. LTE IPV6地址配置
  9. 使用openCV进行视频人脸识别
  10. 指针java_Java中的指针