#質問概要
下記ソースコードを基に質問させていただきます。
ソースコードの5行目では、子クラスを基に生成したインスタンスから、親クラス(抽象クラス)のstaticなメソッドにアクセスができています。この部分は理解しています。
しかし、7行目では子クラスを基に生成したインスタンスから、実装したインターフェースのstaticなメソッドにアクセスできません。なぜでしょうか?
恐らく、私の抽象クラスとインターフェースの理解が浅いことが原因だと考えられるので、抜けている知識を補強していただきたです。
#ソースコード
package test; public class Sub extends AbstSample implements InterSample{ public static void main(String[] args) { Sub absub=new Sub(); absub.abstMethod(); Sub insub=new Sub(); insub.interMethod(); } } abstract interface InterSample{ public static void interMethod() { System.out.println("インターフェース"); } } abstract class AbstSample{ public static void abstMethod() { System.out.println("抽象クラス"); } }
上記ソースコードをコンパイルすると、
5行目で警告文、
「型 AbstSample からの static メソッド abstMethod() には static にアクセスする必要があります」が出てきます。
また、7行目でコンパイルエラーが起こります。
「メソッド interMethod() は型 Sub で未定義です」
#備考①
「そもそも、親クラスのstaticなメンバを子クラスを基に生成したインスタンスからアクセスしよとすること自体がおかしい!というか、そんな場面あるわけない。」ということは理解しています。
しかし、Java言語では機能上これができます。質問としてはその部分ではなく、なぜ、5行目できていることが、7行目ではできないのか、という疑問にもしご回答できる方がいたら、教えていただきたいです。宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/07 09:59
2020/11/07 10:05
2020/11/07 10:25
2020/11/07 10:30
2020/11/07 11:09
2020/11/07 11:22 編集
2020/11/07 11:46 編集
2020/11/07 11:56
2020/11/07 12:18