抽象类和接口详解

来源:互联网 发布:linux显示时间命令 编辑:程序博客网 时间:2024/06/05 19:52

1. 接口是否可以继承接口?可以
//提高代码的重用性,降低代码复杂性,类似于抽象类。
2. 抽象类是否可实现接口?可以
//接口是一个特殊的抽象类,这个抽象类所有的方法都是抽象方法,抽象方法不可实现。
//抽象类对抽象方法可有可无,实体方法也可有可无。
3. 抽象类是否可继承具体类?可以
//抽象类可以继承具体类,前提是实体类必须有明确的构造函数。
//Obejct就是一个实体类,所有类都继承自它。
•所有的class都必须有一个构造方法,如果没有声明,系统自动生成一个public 无参的构造方法;当自己声明一个任意类型的构造方法后,系统便不再自动生成public 无参构造方法;
•所有子类构造器都要求在第一行调用父类构造器,如果不写,系统默认调用父类的无参构造器。
4. 抽象类是否可以有静态main方法?可以
•具体类与抽象类对比:
1. 抽象类不能直接实例化,对抽象类new运算符会报错。
2. 抽象类可以有抽象成员。
•抽象类与接口比对:
抽象类表示该类中可能已经有一些方法的具体定义;
接口仅仅只能定义各个方法的(方法名、参数列表、返回类型),不涉及具体细节。

抽象类与接口相似:
1. 不能实例化;
2. 包含未实现的方法声明;
3. 派生类必须实现未实现的方法,抽象类是抽象方法,接口则是全体成员(不仅是方法)。
差异:
1. 类可以实现无数个接口,但仅能从一个类(包括抽象类)继承,从抽象类派生的类仍可以实现接口,因此接口可以侧面解决java不能多重继承的问题。
2. 抽象类当中可以有非抽象的方法,接口里则:
(全是抽象方法)&&(仅作声明)&&(仅能public访问权限)&&(没有具体实现的方法)。
3. 抽象类中成员变量可以被不同修饰符修饰,接口中的成员变量默认都是静态常量(static final)。
4. 抽象类是对象的抽象,接口是一种行为规范(在项目开发中,由架构师设计好各层接口,对业务实现代码的设计进行规范)。

0 0