A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0racle 中级黑马   /  2015-7-1 21:57  /  421 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

面向对象的特性封装继承多态,前两者都感觉差不多了。但抽象类与接口有点晕。有谁能解决我的疑惑,最好有一个例子的最好!多谢多谢!:hug:

评分

参与人数 1黑马币 +3 收起 理由
想来学习 + 3 很给力!

查看全部评分

6 个回复

倒序浏览
可以简单的理解为接口是抽象类的特殊情况,而抽象类是继承的特殊情况,即接口《抽象类《继承。
回复 使用道具 举报
本帖最后由 sophitia 于 2015-7-1 22:54 编辑

接口里面全部都是抽象方法  默认方法前会有abstract 因此不能NEW 对象 只能实现(implements)
抽象类里也有抽象方法 但是可以有非抽象方法 抽象类的作用一般为(适配器) 因为接口中有非常多的抽象方法 但是我们有时候只需要其中的一个或者几个 那么应该怎么办呢?用抽象类实现接口 在用子类继承抽象类  那么只要重写(OverLoad)抽象类中方法即可 是不是觉得很有用处呢?
例如(For example)
回复 使用道具 举报
接口你可以想成你电脑上的USB接口, 只是一种用作规范的东西, 你的U盘可以插, 你的数据线可以插, 需要USB供电的东西都可以插, 只要你的插头满足我定义的规格。  我预定的规格,就是接口。

抽象类就是你上面哪些可以插USB的插头在生产出来的时候的一种设定, 或者说是一种目标。 例如,U盘, 我要的功能就是数据传输,轻量的供电。 但是不同的U盘生产商生产的U盘不一样, 有的是塑料的, 有的是铁的, 有的对电流要求大一点, 有的小一点。 但是这些都是U盘,  也可以说都实现了U盘这个抽象类。
回复 使用道具 举报
杨基米德 来自手机 中级黑马 2015-7-2 06:31:07
报纸
你可以这么理解
普通类的实例化:
Zi z=new Zi();
相当于将一个新的Zi类的对象的地址赋值给Zi类的对象z
多态类的实例化:
Fu f =new Zi();
相当于将一个新的Zi类的对象的地址赋值给Fu类的对象
而多态只是一个新的规定,能让多态实例化的一种定义~
不知道我这么说你是否理解~
回复 使用道具 举报
通俗理解,比如鸟类是个抽象类,鸟类有翅膀、羽毛等属性,现在你想要定义一大批的鸟类的实体类,如企鹅类、鸭子类、天鹅类,这些鸟类实体类都具有鸟类的所有属性,但他们在鸟类所有属性的基础上又有自己的属性,你就可以以这些鸟类实体类来继承鸟类的抽象类,这样这些实体类获得了鸟类所共有的属性,而你可以自己添加他们自己特有的属性,大大减少了编程人员的工作量。     接口其实和抽象类差不多,如果说抽象类是“is a”的关系,接口就是“like a”了,其间的理解很容易。
回复 使用道具 举报
多态即一种事物的多种形态,例如:猫可以叫为动物
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马