【全桟の道】JAVA基礎課程1_静的変数とインタフェース(20190610 v 1.0)
JAVA基礎コースへようこそ
ブログアドレス:https://blog.csdn.net/houjiyu...このシリーズの文章は主にJAVAのいくつかの基礎知識点について説明し、普段のまとめのために、JAVAの開発菜鳥に接触したばかりであれ、業界のベテランであれ、多くの同業者に助けを与えたいと思っています.問題があれば、すぐに伝言を残したり、QQ:243042162を追加したりしてください.
メッセージ:
海納百川は、容乃大がある.壁は千尋に立てられ,欲がなければ剛になる.
JDKとJRE JDK(java development kit,java開発キット、java開発環境と実行環境を提供) JRE(java runtime environment,java実行環境) JVM(java virtual machine,java仮想マシン、java全体がプラットフォームの最も核心的な部分を実現) Java環境をインストールするとき、jdkのjreと外のjreの違いについてよく疑問があります.
jdk-jre(専用jre)と共通jreの主な違いは、jdk-jreにserverのvm実行オプションが1つ増えたことです.
簡単に言えば、コンピュータがjavaプログラムを実行すると、client vmが自動的に呼び出されます.ただしjavaプログラムの開発でserver vmが使用されている場合は、次の点に注意してください.
通常の「java自動更新」とは、インストールされているJDKバージョンの更新ではありません.この共通JREランタイム環境の更新を指します.この更新は、あなたのコンピュータが最新バージョンを使用して、いくつかのウェブサイトやWebアプリケーションなどのjavaプログラムを正常に実行できるようにするためです.
JAVA識別子とキーワード
1.識別子:クラス名(インタフェース、列挙、抽象クラスを含む)、メソッド名、変数、定数名、パッケージ名など、カスタマイズ可能な文字の組み合わせを指します.
1)識別子は、キーワードまたはtrue、false、nullではありません.
2)識別子は、アルファベット、0〜9のアンダースコア()またはドル記号($)を含むことができる.
3)識別子の最初の文字は、アルファベット、アンダースコア()、またはドル記号($)でなければなりません.
4)識別子は大文字と小文字を区別し、最大長は規定されていない.
2.キーワード
アクセス制御
private
protected
public
クラス、メソッド、変数修飾子
abstract
class
extends
final
implements
interface
native
new
static
strictfp
synchronized
transient
volatile
プログラムせいぎょ
break
continue
return
do
while
if
else
for
instanceof
switch
case
default
エラー処理
try
catch
throw
throws
finally
パッケージ関連
import
package
基本タイプ
boolean
byte
char
double
float
int
long
short
null
true
false
変数参照
super
this
void
リザーブワード
goto
const
静的変数static
1.メンバー変数を修飾し、クラスのメンバーに変更して、そのメンバーに対するすべてのオブジェクトの共有を実現します.
2.メンバーメソッドを修飾するために使用され、それをクラスメソッドに変更し、直接「クラス名.メソッド名」を使用して呼び出すことができ、ツールクラスでよく使われる.
3.静的ブロック使用法は、複数のクラスメンバーを一緒に初期化し、プログラムをより整然とさせ、オブジェクトの初期化プロセスを理解することが重要である.
4.静的パケット使用法は、クラスのメソッドを現在のクラスに直接インポートすることで、「メソッド名」を直接使用してクラスメソッドを呼び出すことができ、より便利です.
コードの例
しゅつりょく
リライトとリロード
メソッドの書き換えOverridingとリロードOverloadingはJava多様性の異なる表現である.
Overridingの書き換えは親クラスと子クラスの間の多態性の表現であり、オーバーロードOverloadingはクラス内の多態性の表現である.
インタフェースと抽象クラスいくつかの方法を持っていて、デフォルトの実装をしたい場合は、抽象クラスを使用します. 多重継承を実現するには、インタフェースを使用する必要があります.Javaはマルチ継承をサポートしていないため、サブクラスは複数のクラスを継承することはできませんが、複数のインタフェースを実現することができます.インタフェースを使用して解決することができます 基本機能が変更されている場合は、抽象クラスを使用する必要があります.基本機能を変更し、インタフェースを使用する場合は、インタフェースを実装したすべてのクラスを変更する必要があります. インタフェースは、インタフェースを継承することができる.抽象クラスは(implements)インタフェースを実装することができ、抽象クラスがエンティティクラスを継承できるかどうかは、エンティティクラスに明確な構造関数が必要であることを前提としています.
パラメータ
抽象クラス
インタフェース
デフォルトのメソッド実装
デフォルトの方法で実現できます
インタフェースは完全に抽象的です.方法の実現は存在しません
インプリメンテーション
サブクラスはextendsキーワードを使用して抽象クラスを継承します.サブクラスが抽象クラスでない場合は、抽象クラス内のすべての宣言のメソッドの実装を提供する必要があります.
サブクラスはキーワードimplementsを使用してインタフェースを実装します.インタフェース内のすべての宣言メソッドの実装が必要です
コンストラクタ
抽象クラスにはコンストラクタがあります
インタフェースにコンストラクタは使用できません
通常のJavaクラスとの違い
抽象クラスをインスタンス化できない以外は、通常のJavaクラスと何の違いもありません.
インタフェースはまったく異なるタイプです
アクセス修飾子
抽象的な方法にはpublic、protected、defaultなどの修飾子があります.
インタフェースメソッドのデフォルト修飾子はpublicです.他の修飾子は使用できません.
mainメソッド
抽象的なメソッドにはmainメソッドがあり、実行できます.
インタフェースにはmainメソッドがないので、実行できません.
マルチ継承
抽象メソッドは、1つのクラスを継承し、複数のインタフェースを実装できます.
インタフェースは、1つ以上の他のインタフェースのみを継承できます.
スピード
インタフェースよりも高速です
インタフェースは、クラスで実装する方法を探すのに時間がかかるため、少し遅いです.
新しいメソッドの追加
抽象クラスに新しいメソッドを追加すると、デフォルトの実装を提供できます.だから今のコードを変える必要はありません.
インタフェースにメソッドを追加する場合は、インタフェースを実装するクラスを変更する必要があります.
ブログアドレス:https://blog.csdn.net/houjiyu...このシリーズの文章は主にJAVAのいくつかの基礎知識点について説明し、普段のまとめのために、JAVAの開発菜鳥に接触したばかりであれ、業界のベテランであれ、多くの同業者に助けを与えたいと思っています.問題があれば、すぐに伝言を残したり、QQ:243042162を追加したりしてください.
メッセージ:
海納百川は、容乃大がある.壁は千尋に立てられ,欲がなければ剛になる.
JDKとJRE
jdk-jre(専用jre)と共通jreの主な違いは、jdk-jreにserverのvm実行オプションが1つ増えたことです.
簡単に言えば、コンピュータがjavaプログラムを実行すると、client vmが自動的に呼び出されます.ただしjavaプログラムの開発でserver vmが使用されている場合は、次の点に注意してください.
通常の「java自動更新」とは、インストールされているJDKバージョンの更新ではありません.この共通JREランタイム環境の更新を指します.この更新は、あなたのコンピュータが最新バージョンを使用して、いくつかのウェブサイトやWebアプリケーションなどのjavaプログラムを正常に実行できるようにするためです.
JAVA識別子とキーワード
1.識別子:クラス名(インタフェース、列挙、抽象クラスを含む)、メソッド名、変数、定数名、パッケージ名など、カスタマイズ可能な文字の組み合わせを指します.
1)識別子は、キーワードまたはtrue、false、nullではありません.
2)識別子は、アルファベット、0〜9のアンダースコア()またはドル記号($)を含むことができる.
3)識別子の最初の文字は、アルファベット、アンダースコア()、またはドル記号($)でなければなりません.
4)識別子は大文字と小文字を区別し、最大長は規定されていない.
2.キーワード
アクセス制御
private
protected
public
クラス、メソッド、変数修飾子
abstract
class
extends
final
implements
interface
native
new
static
strictfp
synchronized
transient
volatile
プログラムせいぎょ
break
continue
return
do
while
if
else
for
instanceof
switch
case
default
エラー処理
try
catch
throw
throws
finally
パッケージ関連
import
package
基本タイプ
boolean
byte
char
double
float
int
long
short
null
true
false
変数参照
super
this
void
リザーブワード
goto
const
静的変数static
1.メンバー変数を修飾し、クラスのメンバーに変更して、そのメンバーに対するすべてのオブジェクトの共有を実現します.
2.メンバーメソッドを修飾するために使用され、それをクラスメソッドに変更し、直接「クラス名.メソッド名」を使用して呼び出すことができ、ツールクラスでよく使われる.
3.静的ブロック使用法は、複数のクラスメンバーを一緒に初期化し、プログラムをより整然とさせ、オブジェクトの初期化プロセスを理解することが重要である.
4.静的パケット使用法は、クラスのメソッドを現在のクラスに直接インポートすることで、「メソッド名」を直接使用してクラスメソッドを呼び出すことができ、より便利です.
コードの例
class TestSon {
public TestSon(String msg) {
System.out.println(msg);
}
}
public class StaticTest {
TestSon son1 = new TestSon("son1 ");
static TestSon son2;
static {
son2 = new TestSon("static son2 ");
son4 = new TestSon("static son4 ");
}
public StaticTest(String msg) {
System.out.println(msg);
}
TestSon son3 = new TestSon("son3 ");
static TestSon son4;
public static void funStatic() {
System.out.println("static funStatic ");
}
public static void main(String[] args) {
StaticTest.funStatic();
System.out.println("****************");
StaticTest p1 = new StaticTest("p1 ");
}
}
しゅつりょく
static son2
static son4
static funStatic
****************
son1
son3
p1
リライトとリロード
メソッドの書き換えOverridingとリロードOverloadingはJava多様性の異なる表現である.
Overridingの書き換えは親クラスと子クラスの間の多態性の表現であり、オーバーロードOverloadingはクラス内の多態性の表現である.
インタフェースと抽象クラス
パラメータ
抽象クラス
インタフェース
デフォルトのメソッド実装
デフォルトの方法で実現できます
インタフェースは完全に抽象的です.方法の実現は存在しません
インプリメンテーション
サブクラスはextendsキーワードを使用して抽象クラスを継承します.サブクラスが抽象クラスでない場合は、抽象クラス内のすべての宣言のメソッドの実装を提供する必要があります.
サブクラスはキーワードimplementsを使用してインタフェースを実装します.インタフェース内のすべての宣言メソッドの実装が必要です
コンストラクタ
抽象クラスにはコンストラクタがあります
インタフェースにコンストラクタは使用できません
通常のJavaクラスとの違い
抽象クラスをインスタンス化できない以外は、通常のJavaクラスと何の違いもありません.
インタフェースはまったく異なるタイプです
アクセス修飾子
抽象的な方法にはpublic、protected、defaultなどの修飾子があります.
インタフェースメソッドのデフォルト修飾子はpublicです.他の修飾子は使用できません.
mainメソッド
抽象的なメソッドにはmainメソッドがあり、実行できます.
インタフェースにはmainメソッドがないので、実行できません.
マルチ継承
抽象メソッドは、1つのクラスを継承し、複数のインタフェースを実装できます.
インタフェースは、1つ以上の他のインタフェースのみを継承できます.
スピード
インタフェースよりも高速です
インタフェースは、クラスで実装する方法を探すのに時間がかかるため、少し遅いです.
新しいメソッドの追加
抽象クラスに新しいメソッドを追加すると、デフォルトの実装を提供できます.だから今のコードを変える必要はありません.
インタフェースにメソッドを追加する場合は、インタフェースを実装するクラスを変更する必要があります.