黑马程序员技术交流社区
标题:
抽象类问题
[打印本页]
作者:
袁劲松
时间:
2014-1-20 10:22
标题:
抽象类问题
java中抽象类和接口有什么区别?
作者:
dapeng111
时间:
2014-1-20 10:35
本帖最后由 dapeng111 于 2014-1-20 10:37 编辑
第一:抽象类和接口都是一个抽象的类,编译后生成.class文件。
第二:抽象类和接口都需要子类去实现父类中的抽象的方法。
第三:在实现抽相类的时候子类后面加的是extends,实现接口的时候子类后面加的interface
第四:实现抽象类的时候,只能单继承。实现接口的时候可以在子类的后面加上多个接口。希望能帮到你!
作者:
黄晓鑫
时间:
2014-1-20 10:59
接口子类后面加的是implements
接口中的变量都是常量 而抽象不是
抽象类定义的方法都是共性的方法 而接口不是
抽象类可以定义非抽象方法 而接口是
抽象类是方法前面默认修饰符是 default 而接口是 public
作者:
浮出一个美
时间:
2014-1-20 11:14
无论是度娘还是谷歌,我相信他们两口子都能很好的解决你这种很常见的问题。
作者:
s476596497
时间:
2014-1-20 11:23
1、抽象类只能被单继承
接口可以多实现,接口的出现避免了多继承的局限性。
2、抽象类中的数据特点:成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可以是非抽象方法
构造方法:有构造方法
接口中的数据特点:成员变量:是常量。默认修饰 public static final
成员方法:都是抽象方法。都有默认修饰 public abstract
构造方法:没有构造方法
3、抽象类中定义的是继承体系中的共性功能。
接口中定义的是继承体系中的扩展功能。
4、抽象类被继承是"is a"关系:xx是yy的一种
接口被实现是"like a"关系:xx像yy的一种
作者:
三十而立
时间:
2014-1-20 13:16
相同点:
抽象类和接口都是类不断向上抽取得来的,抽象类和接口中的抽象方法都是用来做方法声明的,具体的实现需要在子类中实现,很好的提高了程序的扩展性。
区别:
1.特点:
(1)
抽象类中可以定义非抽象方法;
接口中的方法只能是抽象方法;
(2)
抽象类体现的是继承关系;
接口体现的是实现关系;
(3)
抽象类是is a的关系;
接口是like a的关系;
2. 作用
(1)
抽象类是用来进行多个子类共有方法的定义的;
接口是用来进行功功能扩展的;
(2)
抽象类不知道多继承;
接口支持多继承,以及多实现,因此,提供了很好的扩展性。
作者:
透过生活
时间:
2014-1-20 14:08
抽象类
中有抽象方法,需要继承它的类去重写。
接口中的所有方法必须是抽象方法,由实现它的类重写。
java是单继承,多实现的机制,如果你已经继承了一个类,还需要继承其他类,不妨去实现接口来的灵活
作者:
爱上这格调
时间:
2014-1-20 16:44
浮出一个美 发表于 2014-1-20 11:14
无论是度娘还是谷歌,我相信他们两口子都能很好的解决你这种很常见的问题。 ...
显然再刷分。。。
作者:
姬运涛
时间:
2014-1-20 20:25
在语法层面,Java语言对于abstract class和interface给出了不同的定义方式,下面以定义一个名为Demo的抽象类为例来说明这种不同。
使用abstract class的方式定义Demo抽象类的方式如下:
abstract class Demo{
abstract void method1();
abstract void method2();
…
}
使用interface的方式定义Demo抽象类的方式如下:
interface Demo{
void method1();
void method2();
…
}
首先,abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系(因为Java不支持多继承 -- 转注)。但是,一个类却可以实现多个interface。也许,这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。
其次,在abstract class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会增加一些复杂性,有时会造成很大的麻烦。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2