私たちは、次のコードを持っています:
interface ServiceInterface{
void doService1();
void doService2();
void doService3();
}
abstract class AbstractService implements ServiceInterface{
public void doService1() {};
public void doService2() {};
public void doService3() {};
}
MySerbice ServiceInterfaceはクラス実装するインタフェースを必要としています。
- 第一の方法はMyServiceでServiceInterface、すなわち、インターフェースを実装することができ
、クラスMyServiceで実装さServiceInterfaceを - :第二の方法は、MyServiceで継承AbstractServiceカテゴリー、すなわちことができます
クラスMyServiceで拡張AbstractService
私はあなたを求める:これら二つの方法の違いは何ですか?
方法1:レッツMyServiceではServiceInterfaceインタフェースを実現する、インタフェースのすべてのメソッドでMyServiceでは、実装する必要があります。
方法2:抽象クラスのインターフェイスは、すべてのメソッドを達成したので、レッツたMyService AbstractServiceクラスの継承、それは方法の一部を書き換えるために彼らの必要性に応じてのみMyServiceで選択的です。
アプリケーション:アダプター
スターター例
インターフェース
public class TestServlet {
public static void main(String[] args) {
}
}
interface Servlet{
void init();
void destroy();
void service();//为了使用这样一个方法
}
方法1:直接インタフェースを実装します
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
}
}
方法2:インタフェースを実装継承したクラス
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{
}