注册 登录
重磅消息:开通VIP会员,获取平台所有项目,永久使用,详细请咨询QQ:3376762016
远程服务部署安装,售后服务,请加QQ1:3376762016,QQ2:3597230140(即将满员),QQ3:1399491757(已满)
查看: 648|回复: 0
打印 上一主题 下一主题

现在要创造一个蜘蛛侠。人有“唱歌”和“考试”的功能,蜘蛛有“爬行”和“吐丝”...

[复制链接]

该用户从未签到

3518

主题

3532

帖子

66万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
668954
QQ
跳转到指定楼层
楼主
发表于 2020-5-5 14:54:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接口(英文:Interface)是Java中非常重要的内容,初学的时候可能感受不深,但是在做项目的时候,对面向接口编程的运用就变得尤为重要,不过这是后话了。现在先讨论假如是刚刚接触接口这个概念,该怎么玩?如果是看过我之前文章的朋友应该了解,在遇到一个新概念的时候,我一般思考框架是先问下面三个问题:
1.这个东西有什么用?用来干什么的?它的意义在哪里?(显然,如果是没用的东西,就没必要浪费时间了;其实,弄懂了这个问题,就掌握了50%)
2.这个概念或者技能点怎么用?也就是它的表现形式,如关键字、修饰词、语法什么的。。。(这个占20%)
3.这个东西在用的过程中,有哪些关键点和细节点?(这个占30%)
上面三个问题搞清楚了,剩下的就是去用了。。。“无他,但手熟尔。”
一、接口有什么用?它的意义在哪里?
回答这个问题,两句话就够了:
1.接口表示一种能力;
2.接口表示一种约定。
先来看第一点“接口表示一种能力”,举个栗子:
需求:现在要创造一个蜘蛛侠。人有“唱歌”和“考试”的功能,蜘蛛有“爬行”和“吐丝”的功能。
分析:首先蜘蛛侠是一个人,他有蜘蛛的能力。按照面向对象思想,可以将人和蜘蛛分别定义成抽象类。但是,不能让蜘蛛侠在继承人的同时又继承蜘蛛。两个原因:一、蜘蛛侠不是蜘蛛,不符合继承中 【is a】的关系;二、Java只支持单继承。如何解决这个问题呢?这时就要用到接口,接口是【has a】的关系。可以将蜘蛛的行为能力定义为接口,让蜘蛛侠继承人,实现蜘蛛的行为能力的接口。实现代码如下:
1 public abstract class Person { //定义Person抽象类
2 public abstract void sing(); //唱歌抽象方法
3 public abstract void exam(); //考试抽象方法
4 }
5 public interface ISpiderable { //定义一个蜘蛛的行为能力接口
6 public abstract void creep(); //爬行抽象方法
7 public abstract void shootWeb(); //吐丝抽象方法
8 }
9 public class SpiderMan extends Person implements ISpiderable{//继承人,实现蜘蛛的行为能力接口
10 String name = "彼得·帕克";
11
12 @Override
13 public void creep() { //实现爬行方法
14 System.out.println(name + " 在屋顶上爬,在树枝上爬,在夕阳下的草地上爬。。。");
15 }
16 @Override
17 public void shootWeb() { //实现吐丝方法
18 System.out.println(name + " 吐丝织网抓虫子");
19 }
20 @Override
21 public void sing() { //实现唱歌方法
22 System.out.println(name + " 往事不要再提人生已多风雨~");
23 }
24 @Override
25 public void exam() { //实现考试方法
26 System.out.println(name + " 上午考语文,下午考数学,明天考英语。。。");
27 }
28 }
29 public class Test { //测试一下
30 public static void main(String[] args) {
31 SpiderMan spiderman = new SpiderMan();
32 spiderman.creep();
33 spiderman.sing();
34 }
35 }
运行结果如下:
接着来,有天傍晚蜘蛛侠吃饱了没事儿闲溜达,在路边草丛里发现了雷神的大铁锤,于是他有具备了闪电的能力:
1 public interface ILightningable { //定义闪电能力接口
2 public abstract void lightning(); //闪电抽象方法
3 }
4 public class SpiderMan extends Person implements ISpiderable,ILightningable{//继承人,实现蜘蛛的行为能力接口,实现闪电能力接口
5 String name = "彼得·帕克";
6
7 @Override
8 public void creep() { //实现爬行方法
9 System.out.println(name + " 在屋顶上爬,在树枝上爬,在夕阳下的草地上爬。。。");
10 }
11 @Override
12 public void shootWeb() { //实现吐丝方法
13 System.out.println(name + " 吐丝织网抓虫子");
14 }
15 @Override
16 public void sing() { //实现唱歌方法
17 System.out.println(name + " 往事不要再提人生已多风雨~");
18 }
19 @Override
20 public void exam() { //实现考试方法
21 System.out.println(name + " 上午考语文,下午考数学,明天考英语。。。");
22 }
23 @Override
24 public void lightning() {
25 System.out.println(name + " 来一波闪电~"); //实现闪电方法
26 }
28 public class Test { //测试一下
29 public static void main(String[] args) {
30 SpiderMan spiderman = new SpiderMan();
31 spiderman.creep();
32 spiderman.sing();
33 spiderman.lightning();
下载地址:
游客,本付费内容需要支付 50金币 才能浏览支付


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
java无忧网(http://www.javawyw.com),专业提供Java大作业,小作业,课程设计,毕业设计源码,答辩辅导,作业排错,bug修复,专业解答,远程部署运行项目等服务
本网站所有源码,保证能运行!
QQ:1399491757
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回顶部