abstract class和interface的区别
2014-12-31 00:33
316 查看
相同点
1,含有abstract修饰符的class即为抽象类,abstract类不能创建实例对象。interface 也不能创建实例对象。2,含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。interface中的所有方法必须是抽象的。abstract class类中定义抽象方法必须在具体的子类中实现。interface和abstract class都不能有abstract static方法。
3,子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
不同点
1,抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以是任意,但是接口中的方法只能是public static final类型,默认即为public static final类型。interface中的成员变量必须都是public类型,可以不是静态类型。2,抽象类中可以有非抽象构造方法,但是抽象类还是不能实例化,也就是抽象类有构造方法不等于它可以实例化,interface中不能有构造方法。
如下是抽象类可以有构造方法的一个验证:
class AbstractTest { public AbstractTest() { System.out.println("Abstract"); } } public class ExtendAbstract extends AbstractTest{ public ExtendAbstract() { System.out.println("ExtendAbstract"); } public static void main(String[] args) { ExtendAbstract extendAbstract = new ExtendAbstract(); } }
输出的结果为:
3,抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是public型的抽象方法。
4,抽象类中的抽象方法的访问类型可以是public,protected,default(有的文章说是不能是default,但是我刚才试了一下是可以的)。接口中的方法只能是public abstract。
贴出不同访问类型的作用域。
可见/访问性 在同一类中同一包中不同包中 同一包子类中 不同包子类中
5,抽象类中可以包含非抽象的静态方法,接口中不能包含静态方法。
6,一个类可以实现多个接口,但只能继承一个抽象类
参考文章:
http://wenku.baidu.com/link?url=Mq1Z0rA3fKlX54EurSxmyFCJfs5eAfRK2H7Zrg5pUKreu7J3JcTE4hlrTIe4VZFEgxFz6CX5uvh2Xzum3KkfZmqxVVsnR64ldACHMfY-g9G
相关文章推荐
- abstract class 和 interface的区别
- Interface 和 Abstract Class 的区别
- abstract class与interface区别
- Interface 和 abstract class 区别
- abstract class和interface 的区别
- abstract class和interface有什么区别?
- 详细解析Java中抽象类和接口的区别 abstract class和interface(转)
- abstract class和interface的区别(转载)
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface有什么区别?
- abstract class和interface 两者区别
- abstract class与interface的区别
- abstract class和interface的区别
- 在Java和C#中,abstract class和interface的区别
- abstract class和interface有什么区别
- Interface 和 Abstract Class 的区别
- abstract class和interface的区别
- abstract class和interface有什么区别?