ここから本文です

画像のコードについて質問です 17行目のsc.add(1,4)はなぜ呼び出せるのでしょうか...

ひつらささん

2020/3/3117:09:36

画像のコードについて質問です
17行目のsc.add(1,4)はなぜ呼び出せるのでしょうか?
addはstaticメソッドだからこの呼び出し方だとコンパイルエラーが発生すると思ったのですが。

sc.add,staticメソッド,コンパイルエラー,インスタンス,1 4,呼び出し方,インスタンス変数

閲覧数:
7
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nan********さん

2020/3/3117:32:31

これはちょっとややこしいですよね。

まず、superはstaticメソッドでは使えない、と言う制約があります。
これはsuperが自分の「インスタンス」の上位クラスメンバーを呼ぶ、と言うことなので、staticメソッド内ではどの「インスタンス」かが分からないです。

それと違って、

sc.add

の場合、add自体はstaticメソッドですが、staticメソッドはインスタンス側から呼ぶことが可能です(staticメソッドは一つしかないので)から、scと言うインスタンス変数を介することで呼び出すことが可能になります。

  • 質問者

    ひつらささん

    2020/3/3120:37:03

    なるほど、ありがとうございます。
    このコードでなぜ呼び出せるのかはわかりました。疑問がそれでひとつ増えたのですが、
    この問題のコードに、もしaddメソッドを持たないクラスがあったとして、そのクラス型のインスタンスの変数で、
    変数名.add()
    と呼び出すことは不可能という認識で合ってますでしょうか?

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2020/4/1 03:37:32

ありがとうございました

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる