諸事情でやむにやまれずJavaの勉強してます。
本日は抽象クラス(Abstract Class)について勉強中。
( ´_ゝ`)フーン
インタフェース(interface)と違って実装は持てる*1のが抽象クラスと認識していた。
あとはimplimentsじゃなくてextendsってことがインタフェースとの違いかなと。
で、抽象クラスがインスタンスを持たないのは分かった。
が実装を持てるということはstaticなメソッドを用意すれば、抽象クラスから使えるのかが疑問になったのでやってみた。
- Sample.java
abstract class Sample{ public static void printHoge(){ System.out.println("hoge"); } }
- TestSample.java
class TestSample{ public static void main(String[] args){ Sample sample = new Sample(); } }
まずはインスタンスが作れないことを確認。
% javac TestSample.java TestSample.java:3: Sample は abstract です。インスタンスを生成することはできません。 Sample sample = new Sample(); ^ エラー 1 個
インスタンスが作れないことを確認したのでstaticなメソッドを呼び出す。
- TestSample.java
class TestSample{ public static void main(String[] args){ Sample.printHoge(); } }
コンパイルして実行
% javac TestSample.java % java TestSample hoge
実行できた。
というわけで、抽象クラスで実装したstaticなメソッドは抽象クラスから呼び出すことは可能らしい。
で、これ調べて誰得なんだろ?