Java での this、static、final、super キーワードの使用

目次

1.これ

1 はじめに

2.フォーマット

3. 実際の使用方法

4.例

2.静的

1 はじめに

2. 名前

3. 実際の使用方法

4.例

 3.決勝

1 はじめに

2.使用場所

3.例

4.スーパー

1 はじめに

2.フォーマット

3.例


1.これ

1 はじめに

クラス定義メソッドでメソッドを使用しているオブジェクトを参照する必要がある場合は、キーワード this を使用してオブジェクトを表すことができます。

2.フォーマット

this.变量名
this.方法名(参数列表)

3. 実際の使用方法

  (1). 同じメソッド本体内で同じ名前の 2 つのローカル変数を定義することは違法です。ただし、メソッドによって受け入れられる入力パラメーターを含むローカル変数は、クラスのメンバー変数と同じ名前を持つことができます。このとき、this キーワードを使用してオブジェクトを直接参照し、ローカル変数とグローバル変数を区別できます。

  (2). 工法に使用されます。これを通じてクラス内のメンバー メソッドを呼び出すことができ、これによりコンストラクターが同じ名前の他のコンストラクターを呼び出すことができるようになります。

4.例

  (1). ローカル変数とグローバル変数を区別する

public class javaTest{
    String a;
    char b;
    int c;

    public void setTest1(String aa,char bb,int cc){
        this.a=aa;    //this可以删除,因为全局变量名与局部变量名不同
        this.b=bb;
        this.c=cc;
    }
    public void setTest2(String aa,char bb,int cc){
        a=aa;    //与setTest1进行对比
        b=bb;
        c=cc;
    }
    public void setTest3(String a,char b,int c){
        this.a=a;    //this不可以删除,因为全局变量名与局部变量名相同
        this.b=b;
        this.c=c;
    }
    public static void main(String args[]){
        javaTest s=new javaTest();
        s.setTest1("hello",'x',10);
        System.out.println("执行setTest1方法后 a="+s.a+" b="+s.b+" c="+s.c);

        s.setTest2("hello",'Y',10);
        System.out.println("执行setTest2方法后 a="+s.a+" b="+s.b+" c="+s.c);

        s.setTest3("hello",'Z',10);
        System.out.println("执行setTest3方法后 a="+s.a+" b="+s.b+" c="+s.c);
    }
}

   出力結果:

  (2).施工方法

package Study;

public class javaTest{
    String a;
    int b;

    public javaTest(){
        a="张三";
        b=14;
    }
    public javaTest(String a,int b){
        this();   //通过this调用无参构造方法,即调用上面的方法
        System.out.println("a="+this.a+" b="+this.b);
    }
    public javaTest(int b){
        this.b=b;
        System.out.println("b="+this.b);
    }
    public static void main(String args[]){
        javaTest s=new javaTest("李四",30);  //调用第二个构造方法
        javaTest x=new javaTest(30);   //调用的第三个构造方法
    }
}

出力結果

2.静的

1 はじめに

一般に、クラスのメンバーにアクセスするには、クラスをインスタンス化する必要があります。ただし、クラスから完全に独立したオブジェクトを定義したい場合もあり、この場合は、クラス メンバーの宣言の前に static を追加するだけで済みます。

2. 名前

キーワード static を持つメンバーは静的属性を持ちます。

static+メンバ変数=staticメンバ変数(クラス変数)

静的+メンバーメソッド=静的メンバーメソッド(クラスメソッド)

3. 実際の使用方法

静的はクラスを変更するためには使用されませんが、クラスのメンバーを変更するためにのみ使用され、クラスのすべてのインスタンス間で共有されます。

パブリック型の静的メンバーの場合、初期化せずにクラス外でクラス名を使用して直接呼び出すことができます。

4. クラスメソッドの 2 つの原則

(1). クラス メソッドは、非静的変数と、それが属するクラスのメソッドにはアクセスできませんが、メソッド本体内のローカル変数、パラメーター、および静的変数にのみアクセスできます。

(2). this および super キーワードはクラス メソッド内に使用できません。

4.例

プログラム1

public class javaTest{
    static String name="王五";    //静态成员变量
    public static String setName(String n){   //静态成员方法
        name=n;
        return name;
    }
}

プログラム 2 (プログラム 1 からプログラム 2 を呼び出します)

public class javaTest2 {
    String testNmae="张三";
    public static void main(String args[]){
        javaTest2 s=new javaTest2();
        System.out.println("未调用前testName的值:"+s.testNmae);
        s.testNmae=javaTest.name;      //类变量的调用(这时类外不需要初始化)
        System.out.println("调用类变量后的testName的值:"+s.testNmae);
        s.testNmae=javaTest.setName("李四");   //类方法的调用
        System.out.println("调用类方法后的testName的值:"+s.testNmae);
    }
}

出力結果

 3.決勝

1 はじめに

Final が基本データ型を変更する場合、変数は定数になり、値は変更できません。final が参照データ型を変更する場合、変数の値は変更できません。つまり、値に格納されているオブジェクト メモリ アドレスの値は残ります。変更されず、変数は変更できません。他のオブジェクトをポイントしますが、オブジェクト内のメンバーは変更できます

2.使用場所

変数、メソッド、クラスの変更に使用可能

3.例

プログラム1

public class javaTest{
    static String name="王五";    //静态成员变量
    public static String setName(String n){   //静态成员方法
        name=n;
        return name;
    }
}

プログラム2

public class javaTest1{
    final static int number=100;

    public static void main(String args[]){
        //下列语句删除注释后发生编译错误,final修饰的变量number无法再次赋值
        //javaTest1.number=200;

        final javaTest s1=new javaTest();      //实例化程序1
        javaTest1 s2=new javaTest1();

        //下列语句删除注释后发生编译错误,final修饰的变量s1无法再次赋值 
        //s1=s2;
    }
}

4.スーパー

1 はじめに

super キーワードは、クラスの親クラスへの参照を表します。一般に、super には 2 つの一般的な形式があります。

(1). サブクラスのメンバーによって隠されている親クラスのメンバーにアクセスするために使用されます。

(2). 親クラスのコンストラクターを呼び出すことができます

サブクラスと親クラスに同じ名前のメンバー変数またはメソッドがある場合、super キーワードを使用して親クラスのメンバーを参照できます。

2.フォーマット

super.成员变量名
super.成员方法名

3.例

プログラム1

public class javaTest{
    String name;
    char sex;
    int age;

    public String getName(){
        return name;
    }
    public char getSex(){
        return sex;
    }
    public int getAge(){
        return age;
    }
}

プログラム2

public class javaTest2 extends javaTest {
    String studentID;
    String major;
    String name;   //定义一个与父类成员同名的变量name
    //定义一个和父类成员同名的成员方法getName()
    public String getName(){
        return "王五";
    }
    public String getName2(){
        super.name="张三";   //获得父类被隐藏的成员变量name
        return super.getName();  //调用父类被隐藏的成员方法getName()
    }
    public String getMajor(){
        return major;
    }
    public String getStudentID(){
        return studentID;
    }
}

プログラム3

public class javaTest3 {
    public static void main(String[] args){
        javaTest2 s1=new javaTest2();
        s1.name="赵六";
        System.out.println("学生姓名是:"+s1.name);
        System.out.println("学生姓名是:"+s1.getName());
        System.out.println("学生姓名是:"+s1.getName2());
    }
}

プログラム 2 はプログラム 1 を継続し、その後プログラム 3 がプログラム 1 と 2 のメンバー変数とメソッドを呼び出します。

出力結果

 

おすすめ

転載: blog.csdn.net/weixin_47406082/article/details/123654259