Java图形界面实战如何用键盘控制小球的移动以及接口的讲解

如何实现小球的移动

还是先走一个小球吧,已经做了很多次了,我们开始思考,如果用户按了键盘上的一个键,那么子啊整个计算机系统中,谁最先知道这件事情呢?这个大家都可以猜出来没错就是键盘,不过后面的事情,键盘到底是通知给谁了?我们干脆跳过中间环节吧,一定会到操作系统对吧?如果你的程序要能够响应用户的输入,是不是操作系统要将这件事情通知给你的程序?系统怎么能够把一件事情通知到你的程序呢?其实之前我们遇到过类似和系统打交道的事情无论是开始的main,还是重画的paint,抑或是线程的run都是和系统打交道的,系统和程序交流的唯一办法就是你准备一个方法,它会在合适的时候来调用。难道我们要一个个地记住方法吗?Java的设计者提供了一个很好的解决方案——接口
我们现在来认识接口,其实在前面的线程里我们已经使用了接口Runnable,但是那个时候我们没有仔细讲接口是什么,为什么一定要使用接口。
我是个对象,我是个男人类的对象,可以这么说,男人是从一大堆相似的对象中抽象出来的一个概念,男人是人类的一种,应该是人类的子类,也就是说,人类是从男人和女人中抽象出来的,人类是动物类的子类,那么动物类就是人类的抽象。我们现在要写出一个类——动物类,你想想动物类该怎么写,我想至少得有吃,喝,拉,撒,睡这些方法,那么我们就定义这些方法,具体到”吃”这个方法,你觉得有办法描述清楚动物的”吃”吗?是不是没法描述,因为不同的动物的吃有很大差别。

class Animal{
    public void eat(){
    //描述如何吃
      }
    }

注释的位置是不是很难办,我确切地知道作为一个动物一定要有吃的方法,但是我现在没有办法描述,既然这个样子就干脆不描述了。

class Animal{
    public void eat();
    }

如果你是在eclipse上这么写,你会发现编辑器马上就会报错,因为没有方法的主体,可是不知道怎么写主体呀,那你可以在这个方法前说明这个方法是”抽象”的。

class Animal{
    public abstract void eat();
    }

Animal类的这个地方也立刻报错了,它提示如果类里面有抽象方法,那么这个类也需要说明成抽象的。其实到现在都很好理解,我们抽象,抽象抽象到一定程度,得到了一个叫做动物的类,可是这个类太抽象了,很多东西我没法描述,那么我就告诉Java编辑器,这是抽象的,我不具体写内容了。

abstract class Animal{
public abstract void eat();
}

又有一个问题,抽象类能产生对象吗?如果你是Java编辑器,别人给了你一个代码,代码里将抽象的类变成对象,你有办法吗?所以抽象类没法生成对象。
我们再想想动物类里面的其他办法,你会发现所有的方法都没法描述,不但方法没法描述,而且根本找不到声明变量的需要,我们管这样的类叫做纯抽象类,在Java里纯抽象类会被替换成另一个名字叫做接口。

interface Animal{
   
    public void eat();
    }
class Person implements Animal{
   

}    

我们用一个人的类来实现动物的接口,代码写到这儿,你就会发现Person下面有红色波浪线,这个类就出错了,把鼠标放在Person上面,提示告诉你,必须实现接口Animal里面抽象的方法eat。这有什么用?
举个例子,还是我老师和我说的,假设我现在是一个班的老师,班里有20个学生,我觉得天天上课太辛苦了,而且钱还赚的少,我现在想出了一个好办法,我出去接一个软件开发的活,报价10万,根据之前的标准,大约有10万行的代码量,我的课改成了实训项目,也都不用上课了,每个学生平均5000行代码,各自回家去完成,一个学期结束,完成的学生这门课就通过了,而且不但赚了讲课的钱,还把外包的软件的钱给赚了,这个计划看上去很好,但是有一个问题,就是到最后,我需要将20个人写的10万行代码给合并起来才能拿去售卖,这样我难道要看懂10万行代码吗?不,这样看上去太累了,于是我规定,学生们要给自己写的5000行代码写上注释,每个人最多有200行标注上是给我看的,其他的我不用看就能合并,这个规定在Java里不需要,所有要给我看的代码前要写上public,不需要我

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值