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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

含有 abstract 修饰符的 class 即为抽象类, abstract 类不能创建的实例对象。含有 abstract
方法的类必须定义为abstract class,abstract class 类中的方法不必是抽象的。abstract class
类中定义抽象方法必须在具体(Concrete)子类中实现, 所以,不能有抽象构造方法或抽象静
态方法。 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract
类型。
接口( interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。 接口
中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象
的普通方法。
4. 抽象类中的抽象方法的访问类型可以是 public, protected 和(默认类型,虽然
eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即
为 public abstract 类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任
意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类
型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
再说说两者在应用上的区别:
abstract class主要用于代码实现方法发挥作用,可以实现代码的重用;
interface用于系统架构设计方面发挥作用,主要用于定义模块之间的通信契约

1 个回复

倒序浏览
受教了!!!!!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马