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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LHP 中级黑马   /  2014-4-3 09:04  /  1724 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪位大神给详细的说一下关系和用法

6 个回复

倒序浏览
类与类之间  用 继承  extends
类与接口 用实现  implements
接口 用 interface 声明

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
网上搜下很多的.可以简单说下,一个类必须实现接口中的全部方法,所以常常用一个抽象类实现接口,再用子类继承抽象类,有选择的实现抽象类方法。此外一个子类只能有一个父类,而一个类可以实现多个接口。
回复 使用道具 举报
本帖最后由 1453149997 于 2014-4-3 10:35 编辑

类 接口 继承 实现之间的关系:
(1)类:是对象的属性和行为的描述,代表一个体系,比如Animal类,它定义了动物这个体系的共性特征和行为;
如果是要定义一个Person类,就可以继承Animal,然后Person再添加自己特殊的属性和行为;
      继承:继承不可乱用,比如人可以继承Animal,但是人不能因为和树一样都存在高度这个属性就可以继承树;
(2)接口:用于定义规则和约束;
        实现:接口定义好后,需要某些类去实现,而对于实现接口的类来说,对于接口的实现只是在功能上进行了扩展,比如扫大街的人可以实现黑马训练营所规定的入学标准(接口),那么他就可以成为黑马学员了;
(3)类和类之间只存在单继承,但是类可以实现多个接口,接口和接口可以多继承,因为即使继承的多个接口之间存在相同方法,但是没有方法体,所以不会冲突。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 haio 于 2014-4-3 11:32 编辑

补充一下:接口
接口:初期理解可以理解为一个特输的抽象类
          当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表现出来interface
          interface用于定义接口
类与类之间:用继承,因为父类中有非抽象方法,子类可以直接拿来用或者是复写功能内容,
           但是接口中全部是抽象类,需要子类去一一复写,才可以创建对象进行调用,所以就用一           个更贴切的词implements(实现)来表示
一个类可以单继承(因为功能内容是确定的)和多实现(因为功能内容是不确定的(抽象))

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
学习过Java的同学都知道Java只支持单继承,不支持多重继承的,也就是说在java中一个类只能有一个父类。可是在实际应用中,我们又往往需要使用多重继承来解决问题。那这不是前后矛盾了么?又说不能多重继承,又说要使用多重继承来解决问题。
    其实这是有原因的的,下面我们就来具体说说。首先,我们来说说为什么Java不支持多重继承。先假设Java支持多重继承,注意是假设,事实并不支持的。举个例子,类C继承类B和类A,A、B都有一个返回值、方法名、参数都完全相同的而内部实现不同的方法,那么类C就不知道该继承哪个类里的方法,从而出现问题。所以为了避免此类问题Java不支持多重继承。
    既然Java不支持多重继承,那我们遇到需要使用多重继承来解决的问题,我们又该怎么办呢?为此,Java提出了接口的思想,接口本质上也是一个类,只不过它所有的方法都是抽象的,也就是说所有的方法都只是做了声明而没有具体的实现内容。为了与普通的类做出区别,这种特殊的类我们不称为类,而命名为接口。类可以继承多个接口,因为对于前面举的例子,由于方法都是抽象没有实现的,类继承哪个接口的方法都无所谓了,都只是个声明而已。不过为了避免与Java不支持多重继承混淆,我们把类继承接口不称作继承而称作实现,也就是说一个类可以实现多个接口。同时当类实现接口时,是要对接口声明的抽象方法具体实现的,所以类实现接口的称呼也显得更加贴切。
    其实接口也可以继承接口的,而且一个接口可以继承多个接口,原因同样是上面举的例子,因为方法都是抽象的,所以不会引起‘不知道该继承哪个方法’的问题。
    最后用一个打比方来结束本文。如果把一个普通类比作一个人,那么父类就是这个人的父亲,接口就是这个人的叔叔,一个人有且只能有一个父亲,却可以有很多个叔叔,一个普通类只能继承一个父类却可以实现多个接口。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
简单说下,就是
1.类:Java中一切皆是类,所以说Java是纯面向对象的,class Demo{ ...类体...},类吧什么都封装了,一块一块的
2.继承:类与类之间的一种关系,什么关系呢,父子关系,
class A{...}
class B extends A{...}
extends就是亲子鉴定证书啦
这样A就是B他老爸,老爸也有隐私啊,就是老爸中贴了private标签的东西,其他的东西作为儿子B,都继承过来了
3.接口:Java中一个类只能有一个老爸,那儿子想要老爸有的东西之外的东西,可是还不想自己干,怎么办,认干爹吧,就是接口interface,想多要,那就多认几个干爹,
class A{....}
interface B{.....}
interface C{.....}
class D extends A implements B,C
implements就是认干爹的凭证
当然啦,D可以只有老爸,也可以只有干爹了,不过老爸只能有一个,干爹随便几个
4.实现:但是吧,老爸和干爹毕竟还是有不同的,老爸和儿子亲啊,能给儿子的东西里面(非private),除了贴了abstract标签的东东全能直接给儿子,而贴了abstract的东东呢,嘿嘿,老爸只是随口一说,“儿子,你要有这个东西,必须有”,所以儿子要自己实现老爸中贴了abstract的东西,必须实现,干爹就不一样了,干爹只会空口说白话,说你要有什么有什么,所以,儿子因为有implements在哪儿,干爹说的那些东东都得自己实现了!!!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马