[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/06 13:20 / Filesize : 292 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド102【大歓迎】



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はその記載されたクラス自身を示すような気がして
下のような考えと悩んでいます。すいませんが教えてください。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef