抽象类和接口(面试问题)之间的区别

电脑杂谈  发布时间:2020-07-28 09:05:11  来源:网络整理

抽象类和接口的区别_a接口与e1接口区别_java中接口和抽象类的区别

带有抽象修饰符的类是抽象类,抽象类不能创建实例对象. 包含抽象方法的类必须定义为抽象类,并且抽象类中的方法不必是抽象的. 抽象类中定义的抽象方法必须在具体的子类中实现,因此不能有抽象构造方法或抽象静态方法. 如类未实现抽象父类中的所有抽象方法,则也必须将子类定义为抽象类型.

接口可以说是抽象类的特例. 接口中的所有方法必须是抽象的. 接口中的方法定义默认为public abstract类型,而接口中的成员变量类型默认为public static final.

下面比较一下两者之间的语法差异:

1. 抽象类可以具有构造函数,但接口不能具有构造函数.

2. 抽象类中可以有普通成员变量,但接口中没有普通成员变量

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

4. 抽象类中抽象方法的访问类型可以是public,protected和(默认类型,尽管

a接口与e1接口区别_抽象类和接口的区别_java中接口和抽象类的区别

在eclipse下未报告任何错误,但它不起作用),但是接口中的abstract方法只能是public类型,默认是public abstract类型.

5. 静态方法可以包含在抽象类中,但是静态方法不能包含在接口中

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

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

接下来,让我谈谈应用程序中两者的区别:

接口在系统体系结构设计方法中起着更大的作用,主要用于定义模块之间的通信协定. 抽象类在代码实现中起作用,并且可以实现代码重用. 例如,模板方法设计模式是抽象类的典型应用. 假定项目的所有Servlet类都必须使用相同的方法进行权限判断和记录访问. 记录并处理异常,然后可以定义一个抽象基类,以便所有Servlet都可以在该抽象基类的服务方法中继承该抽象基类,以完成权限判断抽象类和接口的区别,记录访问日志和处理异常代码,每个sub该类仅完成各自的业务逻辑代码抽象类和接口的区别,伪代码如下:

公共抽象类BaseServlet扩展了HttpServlet {

a接口与e1接口区别_抽象类和接口的区别_java中接口和抽象类的区别

公共最终void服务(HttpServletRequest请求,HttpServletResponse响应)抛出IOExcetion,ServletException {

记录访问日志

执行权限判断

如果(具有权限){

尝试{

doService(request,response);

}

java中接口和抽象类的区别_抽象类和接口的区别_a接口与e1接口区别

catch(Excetpion e){

记录异常信息

}

}

}

受保护的抽象void doService(HttpServletRequest请求,HttpServletResponse响应)引发IOExcetion,ServletException;

//请注意,访问权限被定义为受保护的,这既又严格,因为它仅用于子类

a接口与e1接口区别_抽象类和接口的区别_java中接口和抽象类的区别

}

公共类MyServlet1扩展了BaseServlet

{

受保护的void doService(HttpServletRequest请求,HttpServletResponse响应)引发IOExcetion,ServletException

{

此Servlet仅处理的特定业务逻辑代码

}

}

父类方法中间的某些代码不确定,将其留给子类以使用模板方法设计模式.

注意: 这个问题的想法是首先一般性地解释抽象类和接口的基本概念,然后比较两者的语法细节,最后讨论两者之间的应用差异. 比较两者的语法细节的方法是从构造方法,普通成员变量和方法(包括抽象方法),静态变量和方法以及类的继承六个方面逐一比较答案. 第三篇从作者角度继承了答案,特别是最后,他用一个典型的例子来展示他深厚的技术能力.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-288673-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...