abstract class 和 interface 的区别

简介: 1、interface中只能包含静态常量和抽象方法,且静态常量是public  final static 的,抽象方法是 public abstract 的。

1、interface中只能包含静态常量和抽象方法,且静态常量是public  final static 的,抽象方法是 public abstract 的。

2、abstract class 除了能包含 interface 所能包含的东西外,还能包含具体类能包含的任何东西。

3、抽象类可以实现接口,抽象类可以继承抽象类,抽象类可以继承具体类,接口可以继承接口。

4、接口主要用于系统框架的设计,用来定义模块直接的通信接口。而抽象类可以用来实现代码重用。设计模式中的模版方法模式就利用了抽象类。假如在项目中有多个Servlet中都要进行权限判断、日志记录等相同操作,就可以顶一个抽象类,在抽象类中就可以采用模版方法模式定义一个具体方法,在该具体方法中实现这个相同操作,同时定义一个抽象方法以供子类实现自己特有的操作。伪代码如下:

public abstract class BaseServlet extends HttpServlet{
	protected final void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		日志记录;
		权限判断
		if(有权限){
			doService(request,response);
		}else{
			//提示权限不足
		}
	}
	
	protected abstract void doService(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
}
这里如果用接口就不能实现了。


目录
相关文章
|
Java
JAVA 抽象类(Abstract Class) 和 接口(Interface) 的区别
对于面向对象编程来说,抽象是它的一大特征之一。在 Java 中,可以通过两种形式来体现 OOP 的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。今天我们就一起来学习一下Java中的接口和抽象类抽象类不能用于实例化对象,抽象类往往用来表示抽象概念。举个例子,中国人(Chinese 类)和美国人(American 类)都有“吃饭”这个行为,因此可以先定义一个 Person 类,然后让 Chinese 和 American 都继承这个类。但如何在父类 Person 中定义“吃饭”这个方法呢?一般
128 0
|
6月前
|
Java
java-基础-Interface、abstract类、Static class 、non static class的区别
【4月更文挑战第5天】Java中的接口、抽象类、静态类和非静态类各具特色:接口仅含抽象方法和常量,用于定义行为规范;抽象类可包含抽象和非抽象方法,提供部分实现,支持多继承;静态内部类不依赖外部类实例,可独立存在,访问外部类的静态成员;非静态内部类持有关联外部类引用,能访问其所有成员。这些机制根据设计需求和场景选择使用。
48 6
|
6月前
|
Java API
Class 类
Class 类
37 1
|
Java 开发者
抽象类(abstract class)和接口(Interface)的区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class)
97 0