【全桟の道】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.静的パケット使用法は、クラスのメソッドを現在のクラスに直接インポートすることで、「メソッド名」を直接使用してクラスメソッドを呼び出すことができ、より便利です.
    コードの例
    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はクラス内の多態性の表現である.
    インタフェースと抽象クラス
  • いくつかの方法を持っていて、デフォルトの実装をしたい場合は、抽象クラスを使用します.
  • 多重継承を実現するには、インタフェースを使用する必要があります.Javaはマルチ継承をサポートしていないため、サブクラスは複数のクラスを継承することはできませんが、複数のインタフェースを実現することができます.インタフェースを使用して解決することができます
  • 基本機能が変更されている場合は、抽象クラスを使用する必要があります.基本機能を変更し、インタフェースを使用する場合は、インタフェースを実装したすべてのクラスを変更する必要があります.
  • インタフェースは、インタフェースを継承することができる.抽象クラスは(implements)インタフェースを実装することができ、抽象クラスがエンティティクラスを継承できるかどうかは、エンティティクラスに明確な構造関数が必要であることを前提としています.

  • パラメータ
    抽象クラス
    インタフェース
    デフォルトのメソッド実装
    デフォルトの方法で実現できます
    インタフェースは完全に抽象的です.方法の実現は存在しません
    インプリメンテーション
    サブクラスはextendsキーワードを使用して抽象クラスを継承します.サブクラスが抽象クラスでない場合は、抽象クラス内のすべての宣言のメソッドの実装を提供する必要があります.
    サブクラスはキーワードimplementsを使用してインタフェースを実装します.インタフェース内のすべての宣言メソッドの実装が必要です
    コンストラクタ
    抽象クラスにはコンストラクタがあります
    インタフェースにコンストラクタは使用できません
    通常のJavaクラスとの違い
    抽象クラスをインスタンス化できない以外は、通常のJavaクラスと何の違いもありません.
    インタフェースはまったく異なるタイプです
    アクセス修飾子
    抽象的な方法にはpublic、protected、defaultなどの修飾子があります.
    インタフェースメソッドのデフォルト修飾子はpublicです.他の修飾子は使用できません.
    mainメソッド
    抽象的なメソッドにはmainメソッドがあり、実行できます.
    インタフェースにはmainメソッドがないので、実行できません.
    マルチ継承
    抽象メソッドは、1つのクラスを継承し、複数のインタフェースを実装できます.
    インタフェースは、1つ以上の他のインタフェースのみを継承できます.
    スピード
    インタフェースよりも高速です
    インタフェースは、クラスで実装する方法を探すのに時間がかかるため、少し遅いです.
    新しいメソッドの追加
    抽象クラスに新しいメソッドを追加すると、デフォルトの実装を提供できます.だから今のコードを変える必要はありません.
    インタフェースにメソッドを追加する場合は、インタフェースを実装するクラスを変更する必要があります.