- 393 名前:デフォルトの名無しさん [2007/06/10(日) 19:42:06 ]
- 会社でJavaの引き継ぎをまかせられてしまった初心者です(35歳)。プログラミング経験はほとんど皆無(商用経験は0、社内研究でperlを少しかじった程度)。
以下のプログラムが存在した場合、「this」はどこを示すのか悩んでいます。 class TestClassB extends TestClassA{ public String doExcute(){ 処理ロジック }; } class TestClassA{ public abstruct String doExcute(); public ActionForward excute(){ String result = null; result = this.doExcute(); } } ログを読む限り、TestClassBをインスタンス化して、excute()をcallしているのですが、 TestClassB内には存在しないため、スーパークラスのexcute()をcallしていると読めます。 その後、excute()の中で、「result = this.doExcute();」という記述があるのですが、これは どのような動きをしているのでしょうか。 その後の動きを見ると、TestClassBのdoExcuteを実行しているようなのですが、 具体的な動きがわらないため質問させていただきます。 @この場合、TestClassAの中でthisと宣言されているが、TestClassBがTestClassAを 継承しているので、thisはインスタンス化されたTestClassBを示す。それなのでTestClassBのdoExcuteが実行される。 ATestClassAの中でthisと宣言されているため、明示的にインスタンス化されてはいないが thisはTestClassAを示すため、自動的にインスタンス化される等して、TestClassA内の doExcuteを実行しようとする。しかし、TestClassA内にはabstructでしかdoExcuteが宣言 されていないので、自動的に実装しているものを探してTestClassBのdoExcuteを実行した。 感覚的には@な気がするのですが、thisはその記載されたクラス自身を示すような気がして 下のような考えと悩んでいます。すいませんが教えてください。
|

|