我是菜鸟 问个关于接口弱智的问题

selaginella 2012-09-23 04:41:50
本人上大二,刚学到java接口,现在我在想为什么java要有接口啊?接口里面的方法只有定义,却没有具体的实现,当一个类实现一个接口的时候还得实现接口中的方法,那就不如在类中直接定义一个方法,然后去调用这个方法得了。可能我问的问题比较弱智,大家勿喷。。。。。
...全文
246 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
pkjjun2012 2012-09-24
  • 打赏
  • 举报
回复
接口是许多类的共性之一。提取出来。是为了让整个体系看起来不那么臃肿。 直白点说就是为了优化体系结构!
rockets311 2012-09-24
  • 打赏
  • 举报
回复
个人理解:接口和抽象类这种抽象的东西,在你开发小的项目的时候可能是体会不到它的好处,也可以不用它们。但是当你开发一个比较大的项目,就不得不去考虑你的架构,这时候它们的好处就体现出来了(例如面向对象的特征中的继承和多态),我感觉用到了接口或者抽象类,很可能就是用到了某种设计模式,而设计模式这些东西可以先大概看一下,写代码多了自然就会去考虑这些东西了,到时候再看这些就很顺理成章了。
liangtu 2012-09-24
  • 打赏
  • 举报
回复
接口就是标准;java中有面向接口编程,就是为了提高代码的灵活性、易扩展性。
chengxu2011 2012-09-24
  • 打赏
  • 举报
回复
呵呵 接口说白了就是让程序更灵活,扩展性更加,一个接口可以有任意多个实现类,这几个实现类随你换。。。
selaginella 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
接口是许多类的共性之一。提取出来。是为了让整个体系看起来不那么臃肿。 直白点说就是为了优化体系结构!
[/Quote]恩恩 谢谢了!!!!
selaginella 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
建议楼主随着学习的加深,对面向对象思想有所了解后,看看设计模式,那时候关于接口的疑问就迎刃而解了
[/Quote]恩恩 谢谢!!! 现在上学根本没怎么做过什么项目,老师上课讲的东西都是太基本的,老师的水平也不行!!!
ps: 我水平更不行。。。
selaginella 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
其实接口就是定义一种规范,举个简单的例子吧,假如你要求各种图形的面积,你就可以定义一个实现求面积的接口,这样你具体求哪一个图形的面积,你只需要实现这个接口里面定义的求面积的方法就行了,不需要求一个图形的面积,在一个图形的类里面定义一个方法,而去实现这个方法,这样就可以简化大量的代码
[/Quote]定义了一个接口,然后在图形类中实现接口中的方法和在一个图形中定义一个求面积的方法可以简化大量的代码吗???我怎么感觉没有简化多少代码啊!!!方法都需要重新实现。。。不是么???
郭梧悠 2012-09-24
  • 打赏
  • 举报
回复
建议楼主随着学习的加深,对面向对象思想有所了解后,看看设计模式,那时候关于接口的疑问就迎刃而解了
Alexander 2012-09-23
  • 打赏
  • 举报
回复
想了解接口的好处最好看一下C++的多重继承。

OOP的标准不允许类的多重继承,但C++的多重继承确实有很多优点,例如多态的应用。Java设计者不想违背OOP标准,但又想保留多重继承的优点,所以就增加了一个可以多重继承的接口。(PS:接口并不是OOP标准中定义的概念)

不过,个人感觉接口在代码复用上的作用确实没有C++的多重继承大。
copaer 2012-09-23
  • 打赏
  • 举报
回复
强行让自己使用接口。
zww8598965 2012-09-23
  • 打赏
  • 举报
回复
依小弟的看法是:接口是对功能类的一个功能的扩张,是“has-a”的关系
zhaoming262350 2012-09-23
  • 打赏
  • 举报
回复
其实接口就是定义一种规范,举个简单的例子吧,假如你要求各种图形的面积,你就可以定义一个实现求面积的接口,这样你具体求哪一个图形的面积,你只需要实现这个接口里面定义的求面积的方法就行了,不需要求一个图形的面积,在一个图形的类里面定义一个方法,而去实现这个方法,这样就可以简化大量的代码
清墨无痕 2012-09-23
  • 打赏
  • 举报
回复
接口有规范某个方法,让子类一定要实现这个方法,还有接口可以同时实现多个,而类只能继承一个
weiryou10 2012-09-23
  • 打赏
  • 举报
回复
好处大大的
selaginella 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
定义接口,其实某种意义也是定义了一种规范,允许实现其本身类要遵循一某种约定,但是具体的实现千差万别。这就该实现接口的类自己定义了。
[/Quote]恩恩 谢谢了 现原来是这样额,感觉是明白了不少
selaginella 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
因为有些时候 类里面你不知道有什么方法, 比如 我可以先写一个打人的接口, 那你那个类需要打人的继承这个接口就可以。

还有接口定义好了方法,实现它的类就必须实现它的方法,这样你的类就不会缺少某种必须的方法了,方便以后的扩展和维护
[/Quote]恩恩 谢谢了!! 现在感觉是懂了不少。。。
a8509190 2012-09-23
  • 打赏
  • 举报
回复
因为有些时候 类里面你不知道有什么方法, 比如 我可以先写一个打人的接口, 那你那个类需要打人的继承这个接口就可以。

还有接口定义好了方法,实现它的类就必须实现它的方法,这样你的类就不会缺少某种必须的方法了,方便以后的扩展和维护
zly361814478 2012-09-23
  • 打赏
  • 举报
回复
定义接口,其实某种意义也是定义了一种规范,允许实现其本身类要遵循一某种约定,但是具体的实现千差万别。这就该实现接口的类自己定义了。
ygyz03 2012-09-23
  • 打赏
  • 举报
回复
还有一种接口称为标识接口,这种接口里面没有任何方法。只表示实现该接口后,就具有了某种能力,如Cloneable、Serializable接口。
selaginella 2012-09-23
  • 打赏
  • 举报
回复
好吧。。谢谢了哈 !!!刚才看了置顶的帖子就是说接口的好处的,看看还是似懂非懂。可能是自己学的还是比较浅吧!!!
加载更多回复(1)
单片机游戏设计 1。概念 对于大部分单片机+LCD的游戏设计,基本采用前后台方式,就是一个台中断,一个台循 环 (哪个前哪个后忘了),LCD部分基本是以固定点阵形式设计,什么叫固定点阵??首先 先 明确,我们设计的游戏不是什 么魔兽争霸或CS,而是黑白形式的固定点阵游戏,例如常见著名游戏贪吃蛇或俄罗斯方 块。他们的每个点 都是预先就固定下来的,而且是比较大的点,这类专门的游戏机玻璃是经过厂家开模出 来 的,有固定的COM,SEG线,然后接到专门的单片机上,例如常用的6502指令集合的单片 机,呵呵,我以前就用6502设计过一个。 对于业余设计的游戏,我们一般用如128*64的LCD来显示,那么我们设计的时候首先应该 把 这个128*64的LCD分块,也就是分出固定点阵出来。LCD的基本点阵是128*64,就是· ¥##¥总之就是好多个点啦,但我们事实上不一定要运算这么多个点,除非你做的游戏 很 有看头。例如你只用左边64*64的地方来做贪吃蛇,那么你打算你的贪吃蛇的活动空间是 多 少呢?如果是8*8个点的话,算一下就是每个点64/8,64/8,也就是8*8个基本点阵,不 过 想好玩一点,当然就是要有16*16个点的活动空间啦,那么每个固定点阵就要占4*4的基 本 点阵了。要注意,这些4*4的东西在64*64LCD上共16*16个,每个都要用来独立运算。 2。时钟 这个其实是游戏的速度,对于一般的弱智类游戏机,他也代表了难度,物体在每个时钟 到 达的时候就传动一次,例如俄罗斯方块没个时刻向下跑一层。赛车游戏每个时刻想前走 一 步。一般这类时钟的时间在0.X秒到1秒之间,物体有规律地匀速运动,让人看到感觉是 连 动。 3。运动 在这里,我先介绍两种比较普遍的弱智游戏机的物体运动规则:柔体传动,刚体传动。 刚体传动 代表作是俄罗斯方块,所谓刚体,就是硬硬的一个东东,运动的时候也不怎么旋转(注 意,俄罗斯方块是会旋转,但其实他是没有经过算法的旋转,纯提取数组的方式,也就 是 把一个放块做成4个模式的点阵结构,其实就是4个方向,呵呵)对于刚体的传动,在每 个 时钟到达的时候向一个方向(很可能是用户输入的)运动一个固定点阵。如果以坐标来 表 达,就是物体的所有基本点阵同时向一个方向(X或Y)移动一个单位。 柔体传动 代表作是贪吃蛇,贪吃蛇跑动的时候并不是整条蛇向一个方向动的(呵呵,蛇蛇身体僵 硬 了),而是在每个时钟的到来,物体由能量头带动(如蛇头),每个点的方向都向下一 个 点传播,然后自己向新的方向走动一步,走动后,下一个点由于得到了上一个点的方向 并 同样地运动一步,所以,他会马上填补上一个点的地方,如此类推。 说的好象没说,看不懂没关系,因为实际的算法可以简化(傻瓜才会一个个点来走的) , 实际上在设计贪吃蛇的时候,只需要把蛇尾巴的那个点阵去掉,然后在蛇头的新方向放 一 个点阵就是了。期间需要记录下每个蛇身的固定点阵的位置,并且在每个运动时刻过后 刷 新一次每个点的位置。 4。显示接口 我们用的一般是点阵式LCD,就是一大片点点,128*64,132*64,240*128等等等等啦, 这 些又叫条屏,就是一写就写一条——8个点(有的也提供写一个点的功能,但贵,至少我没 有),那么如果你只想写一个点怎么办?那就得先把这个点所在的条读出来,然后通过 与,或,的运算后,再放回到LCD上,这时候就要涉及到一个读LCD的问题了,有的LCD提 供 读的功能,你写过什么在上面他记的很清楚(就好象老丁实验板上的LCD),但有的便宜 货 就不行了,那么我们怎么办?没关系,你在内存中提取出一片空间,虚拟一个LCD出来, 每 次写在真实LCD上面的时候,也同时写到内存的哪个虚拟LCD上,那么你要读出LCD的值的 时 候实际就是读出虚拟LD上的数据,然后与或后,再重新写到LCD上,记得也要写到虚拟L CD 上哦。你可以把这片缓冲叫做显存(COOL吧??) 5。流程 这是成功设计游戏的灵魂,你在设计游戏之前必须能正确构思到一个基本模型出来。这 个 基本是菜鸟和虾米的一个区别,有了构思,其他的其实都是时间问题了。 以贪吃蛇为例,我们需要有这样的基本思路:(普通手机上的那种) 蛇运动处理,吃到食物的处理,放新食物的处理,死亡的处理。 以上是基本的思路,至于那些记录分数,音乐效果,玩到一定分数会自动加速度等不是 游 戏的必须,可以在后期处理! 分析下来: 运动:根据用户输入按键进行柔体传动。 吃到食物:置没有食物标志了,蛇长大一个点阵。 放新食物:判断食物标志,如果没有食物,就要放食物,判断放的食物是否和蛇身重叠 , 重叠了要重放。 死亡处理:判断是否撞中自己或撞墙。 这就是基本要做的东西,实际上就是程序要做的东西,那么把上面的东西连成一个流程 是 怎样的呢?我

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧