黑马程序员技术交流社区

标题: 关于什么时候用抽象类和接口? [打印本页]

作者: 贾成龙    时间: 2012-8-3 22:31
标题: 关于什么时候用抽象类和接口?
抽象类中通常放的是类种事物(对象)共有的属性和方法,于是它的子类继承它的时候就自然有了其所有属性和方法,当有些方法是某种子类特有的时,就应该将这个方法分离出来,
以附加的形式(implements)添加进去。

作者: 杜佳瑞    时间: 2012-8-3 23:06
我觉得接口就类似于一个总纲,它制定了整个系统的规则和标准,所有实现类都是按照这个总纲来工作的,如果总纲有什么变动的话,就会牵一发而动全身,整个系统所有的子类都需要改动。
而抽象父类其中肯定是实现了系统的一部分功能,算是一种模板,有几个实现子类来完善其他功能,体现出不同的价值来。
其实接口能实现的抽象类也能实现。另外,java只能实现单继承,而可以实现多个接口,利用这可以弥补类似c++的多重继承               

作者: 刘真    时间: 2012-8-3 23:36
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

7.接口中的方法默认都是 public,abstract 类型的。


作者: 王晓龙    时间: 2012-8-3 23:41
抽象类用abstract class定义, 接口用interface定义
抽象类中可以有不抽象的方法, 接口中所有方法都是抽象的
抽象类用extends继承, 接口用implements实现
抽象类中的方法没有默认修饰符, 接口中的方法默认是public abstract修饰的
抽象类中的成员变量没有默认修饰符, 接口中的成员变量默认是public static final修饰的
一个类只能继承一个抽象类, 一个类可以实现多个接口
能用接口就不用抽象类, 除非必须要定义带有方法体的方法
作者: 谭培龙    时间: 2012-8-4 00:51
1.抽象类中可以有普通成员变量,接口中没有普通成员变量

2.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

3. 抽象类中的抽象方法的访问类型可以是public,protected但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

4. 抽象类中可以包含静态方法,接口中不能包含静态方法

5. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

6. 一个类可以实现多个接口,但只能继承一个抽象类。





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