1

superJAVA のキーワードの背後にある実装を見つけようとしています。

抽象クラスを作成し、1 つのパブリック クラスを拡張しました

abstract class AbsClass {

    private String colour;

    public AbsClass(String colour) {
        this.colour = colour;
    }

    void findColour()
    {
        System.out.println(this.colour);
    }

    //getter and setter 
}

これで、その抽象クラスを実装するパブリック クラスが 1 つあります。

package abstraact.concept;

import java.lang.reflect.Method;

public class ExtendAbsClass extends AbsClass {

    public ExtendAbsClass(String colour) {
        super(colour);
    }


    @Override
    void findColour() {
        super.findColour();

    /* Is the above line similar to

        mthd = this.getClass().getSuperclass().getDeclaredMethod("findColour", null);
        mthd.invoke(this, null); 
    */


    System.out.println("Colour in sub class method " + this.getColour());

    }


    public static void main(String[] args) {
        ExtendAbsClass absClass = new ExtendAbsClass("Blue");
        absClass.findColour();
    }
}

superKeyword と 'this` キーワードの背後にある実装を確認できる場所。

キーワードはどのようsuperにスーパークラス メソッドにアクセスしますか?

前もって感謝します。

4

1 に答える 1

1

Java の基本的な構成要素がいくつかありますが、それらは文字列連結のような Java の一部に置き換えられます。

"Colour: " + this.getColour()

意味

new StringBuilder(new String(new char[] {'C', 'o'..., ' '}).intern()).append(this.getColour());

しかし、これはどのキーワードにも当てはまらないと思います。super、this、throws、extends などは、他の Java 式で実装することはできません。それらは言語の基盤を構築し、この言語を効率的に操作するための単なる構文糖ではありません。したがって、それらはバイトコードおよびその他の基本的な構造によって構築されます。

于 2013-06-16T12:26:28.900 に答える