黑马程序员技术交流社区

标题: interface的小问题 [打印本页]

作者: 迷失的小Z    时间: 2014-11-14 22:58
标题: interface的小问题
抽象类内所有的方法都是抽象的就可以用interface来定义,而且interface编译的文件也是*.class
那么问题来了,如果说用哪一个关键字定义一个类,没有标明是否抽象,那么是不是class和interface都是答案……
作者: win_top1    时间: 2014-11-14 23:38
楼主需要搞清接口与抽象类,首先,接口里面的变量及函数的定义格式是:例如里面的变量是public static final var=10;也就是公共的静态常量,方法是public abstract 返回值类型 函数名称(参数...);而抽象类里面既可以有抽象方法也可以没有抽象方法只有具体方法(非abstract修饰的,当然此种方法必须有方法体),当然,里面也可以什么方法都没有,而变量不必是常量,也可以是变量,只是含有抽象方法的类都是抽象类;其次,接口子类不能创建对象,而抽象类的子类可以创建对象;最后,抽象类还可以实现接口:)
作者: 迷失的小Z    时间: 2014-11-15 21:51
win_top1 发表于 2014-11-14 23:38
楼主需要搞清接口与抽象类,首先,接口里面的变量及函数的定义格式是:例如里面的变量是public static fina ...

哥们你说的这些我都知道,因为接口其实就是没有变量和非抽象方法的比抽象类还抽象的类(别问我为什么这么说,视频里那哥们就是这么说的),所以我纠结的是是不是接口就是一种类,
作者: win_top1    时间: 2014-11-15 22:00
因该是一种类,可以理解为一种特殊的抽象类,定义一个接口,编译之后会生成字节码文件
作者: newLife    时间: 2014-11-15 22:53
学习学习:lol
作者: .ヤ牧马人〃    时间: 2014-11-16 13:08
接口本身就是一种类,一种特殊的类,只是接口里的方法都是抽象的
作者: MeryStyle    时间: 2014-11-16 20:10
.ヤ牧马人〃 发表于 2014-11-16 13:08
接口本身就是一种类,一种特殊的类,只是接口里的方法都是抽象的

接口不是类。
作者: 迷失的小Z    时间: 2014-11-20 00:30
MeryStyle 发表于 2014-11-16 20:10
接口不是类。

求解释……
作者: MeryStyle    时间: 2014-11-20 16:57
迷失的小Z 发表于 2014-11-20 00:30
求解释……

这只是一种定义,没什么好解释的
作者: 迷失的小Z    时间: 2014-11-20 21:12
MeryStyle 发表于 2014-11-20 16:57
这只是一种定义,没什么好解释的

原话是说当抽象类中出现没有非抽象方法时,可以用接口来定义,但没有说它不是类,而且定义接口生成的字节码文件也是*.class文件,而且接口也可以实现多态,证明其本身就是一种类,所以…………
总之谁来解释解释啊……这问题弄不明白朕寝食难安啊……
作者: MeryStyle    时间: 2014-11-23 11:17
迷失的小Z 发表于 2014-11-20 21:12
原话是说当抽象类中出现没有非抽象方法时,可以用接口来定义,但没有说它不是类,而且定义接口生成的字节 ...

接口不是类,它是一种行为契约,为各个类间的交互提供行为规范。接口的意义在于,谁都可用,只要你想要拥有某功能(接口),你就实现它。类就是那个主体,那个实现某个接口的主体。说的简单一点: 类更像是一种“模具”,而接口更偏向一种“能力”,一种实现该接口的类必须履行的“契约”
作者: MeryStyle    时间: 2014-11-23 11:18
迷失的小Z 发表于 2014-11-20 21:12
原话是说当抽象类中出现没有非抽象方法时,可以用接口来定义,但没有说它不是类,而且定义接口生成的字节 ...

深究这个没什么意思, 了解接口的特性就行了
作者: liangkun097    时间: 2014-11-24 02:02
迷失的小Z 发表于 2014-11-15 21:51
哥们你说的这些我都知道,因为接口其实就是没有变量和非抽象方法的比抽象类还抽象的类(别问我为什么这么 ...

接口当然是类啊,只是特殊的一种类罢了
作者: 迷失的小Z    时间: 2014-11-24 17:12
liangkun097 发表于 2014-11-24 02:02
接口当然是类啊,只是特殊的一种类罢了

有说是的有说不是的,但接口是真的生成一个*.class文件




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2