クラスはabstract修飾子は抽象クラスで含まれ、抽象クラスのインスタンスオブジェクトを作成することができません。メソッドを含む抽象クラスは抽象クラスとして定義する必要があり、抽象クラスのクラスメソッドは抽象的である必要はありません。抽象クラスクラスは、特定の(コンクリート)サブクラスで定義された抽象メソッドを実装する必要があり、従って、抽象的または抽象的な静的コンストラクタメソッドではありません。子供はすべての抽象メソッドに抽象親クラスの実装を好きではない場合は、サブクラスも抽象型として定義する必要があります。
界面(インターフェイス)インターフェイスのすべてのメソッドが抽象的である必要があり、抽象クラスの特別な場合であると言うことができます。この方法は、パブリック静的最終的にパブリック抽象型メンバ変数型インタフェースのデフォルトにインタフェースのデフォルト値を定義しました。
構文次の二つの違いを比較します
。1.抽象クラスは、コンストラクタを持つことができ、インタフェースはコンストラクタを持つことができません。
2.抽象クラスは、通常のメンバ変数を持つことができ、インターフェースは通常のメンバ変数ではない
抽象クラス3.非抽象常法を含んでいてもよい、すべてのインタフェース方法が抽象である非抽象通常の方法を持っていなければなりません。
(ただし、デフォルトのタイプ4.アクセスタイプ抽象メソッドが抽象クラスは、保護、および、公共であってもよい
食が与えられていない、またそれは必要があります)が、抽象メソッドは、パブリックインターフェイスタイプ、およびデフォルトはパブリック抽象型。
抽象クラスは、静的メソッドを含んでいてもよい、静的メソッドは、インターフェース含有することができない
抽象クラスとインタフェース6変数は静的メンバ変数、抽象クラスは任意とすることができる静的メンバ変数のアクセスタイプを含むことができるが、唯一のインタフェースで定義されていますpublic static finalタイプがあること、およびデフォルトのpublic static finalタイプであることができます。
7.クラスは複数のインタフェースを実装することができますが、唯一の抽象クラスを継承することができます。
以下は、そのアプリケーション上の2つの違いを言う:
インタフェースは、より多くの、主契約の定義モジュール間の通信に使用されるシステムアーキテクチャ設計方法、で役割を果たしています。抽象クラスは、コードの再利用を実現することができる、コードの態様を実施する役割を果たし、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package
com.lei;
import
java.io.IOException;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
public
abstract
class
BaseServlet
extends
HttpServlet {
/**
* serialVersionUID属性概述
*
*/
private
static
final
long
serialVersionUID = 1L;
public
final
void
service(HttpServletRequest request,
HttpServletResponse response)
throws
IOException, ServletException {
// 记录访问日志
// 进行权限判断
if
(
true
)
// if条件里写的是“具有权限”
{
try
{
doService(request, response);
}
catch
(IOException e) {
// 记录异常信息
}
}
}
protected
abstract
void
doService(HttpServletRequest request,
HttpServletResponse response)
throws
IOException, ServletException;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package
com.lei;
import
java.io.IOException;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
public
class
MyServlet
extends
BaseServlet{
/**
* serialVersionUID属性概述
*
*/
private
static
final
long
serialVersionUID = 1L;
@Override
protected
void
doService(HttpServletRequest request,
HttpServletResponse response)
throws
IOException, ServletException {
// TODO Auto-generated method stub
}
}
|
ミドルクラスのメソッド親コードの不確実な部分、サブクラスの乾燥を残すには、テンプレートメソッドデザインパターンを使用します。
注意:全体的なアイデアの解釈のこの質問は抽象クラスとインタフェースの基本的な概念で始まり、その後、両方の構文の詳細を比較し、最終的に2つのアプリケーション間の違いを言うことです。
構文の詳細を比較し差が構成されている共通のメンバ変数と(抽象メソッドを含む)方法六の態様次いで静的変数とメソッド、継承と答えを比較するための一つのようなもの、第三の、クラスのコンストラクタを開始します誰が彼らの深い技術的な知識を示すための典型的な例では特に、最後の答えの角度を、継承されました。