キーワードの使用に関しては、静的メソッドについてある程度の知識はありますが、使用時に不要なエラーを防ぐためには、誰もがその使用範囲を理解する必要があります。この記事では、static を使用する際の注意点をアクセス範囲とメソッド呼び出しに関する注意点の 2 つに分けて、static を使用する際の注意点をまとめて見ていきましょう。
1. 静的メソッドを使用する場合、静的に宣言されたプロパティおよびメソッドのみにアクセスできますが、静的に宣言されていないプロパティおよびメソッドにはアクセスできません。
パッケージcom.jk.ref; クラス人{ 文字列名。 private static String country="中国"; public People(文字列名){ this.name=名前; } public void Tell(){ System.out.println("名前:"+名前+" "+"国:"+国); } /** * @国を返す */ public static String get Country() { 帰国国。 } /** * @param country 設定する国 */ public static void set Country(String country) { People.country = 国; } } パブリック クラス StaticDemo01 { public static void main(String[] args) { // TODO 自動生成されたメソッド スタブ People.set Country("上海"); People ps1=new People("zhangsan"); //People.country="上海"; ps1.tell(); People ps2=new People("lisi"); // ps2.country="上海"; ps2.tell(); People ps3=new People("wangwu"); // ps3.country="上海"; ps3.tell(); } }
2. 親クラス参照は、親クラスと子クラスのオーバーライドされたメソッドのみを調整できます。親と子の同じ名前を持つメソッドは上書きされず、隠蔽されます。
パブリック クラス TestMain { public static void main(String[] args) { Super sup = new Sub() //カプセル化(上向き整形) sup.m1(); //親クラス参照はサブクラスのオーバーライドされていないメソッドを調整できず、スーパーで mi を出力します。 sup.m2();//サブクラスのメソッドm2を呼び出し、先に親クラスのメソッドを継承してビルドし、同じメソッド名で上書き(書き換え)し、Subにm2を出力 Sub sub = (Sub)sup; //アンボックス化(下向きの形状) sub.m1(); //サブクラスの静的メソッド m1 を呼び出し、最初に親クラスのメソッドを構築します。メソッド名は同じです。メソッド名は同じマスキング メソッドです。Sub に m2 を出力します。 sub.m2();//サブクラスのメソッドm2を呼び出し、先に親クラスのメソッドを継承してビルドし、同じメソッド名で上書き(書き換え)し、Subにm2を出力 } } class Super{ //親クラス public static void m1() { //親クラスの static メソッド System.out.println(“m1 in Super”); } public void m2() { //親クラスのメソッド System.out.println(“m2 in Super”); } } class Sub extends Super{ //サブクラス public static void m1() { //サブクラス static メソッド System.out.println(“m1 in Sub”); } public void m2() { //サブクラスメソッド System.out.println(“m2 in Sub”); } }
上記は、Java で static を使用する際の注意点です。この 2 つの使用法項目は、初心者が練習中によく遭遇する一般的なエラー ポイントでもあります。