【接口】(7)直接实现接口与继承实现了接口的抽象类的区别

有如下代码:

interface ServiceInterface{
	void doService1();
	void doService2();
	void doService3();
}
abstract class AbstractService implements ServiceInterface{
	public void doService1() {};
	public void doService2() {};
	public void doService3() {};
}

需要一个实现 ServiceInterface 接口的类 MySerbice。

  1. 第一种方式可以让 MyService 实现 ServiceInterface 接口,即:
    class MyService implements ServiceInterface
  2. 第二种方式可以让 MyService 继承 AbstractService 类,即:
    class MyService extends AbstractService

请问:这两种方式有什么区别?

方法一: 让MyService实现ServiceInterface接口,MyService中必须实现接口中的全部方法。
方法二:让MyService 继承AbstractService类,由于抽象类已经实现了接口中全部方法,故MyService只根据自身需要选择性重写部分方法即可。

应用:适配器
简易版例子

接口

public class TestServlet {

	public static void main(String[] args) {
		

	}

}
interface Servlet{
	void init();
	void destroy();
	void service();//为了使用这样一个方法
	
	
}

方法一:直接实现接口

class MyServlet implements Servlet{

	@Override
	public void init() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void service() {
		// TODO Auto-generated method stub
		
	}
	
	
}

方法二:继承实现了接口的类

class HttpServlet implements Servlet{

	@Override
	public void init() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void service() {
		// TODO Auto-generated method stub
		
	}
	
}

class MyServlet extends HttpServlet{
	
	
}
发布了7 篇原创文章 · 获赞 0 · 访问量 42

猜你喜欢

转载自blog.csdn.net/weixin_43196768/article/details/104542354