Javaマスターへの道 資格勉強編 Part24
今日は前回のテーマである継承とだいぶ似ているInterfaceをやります。
以下今回使用するプログラムを貼っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public interface Interface { // int id; --why1-- // String name; --why1-- int id = 1; String name = "Yamada"; // private void printName(); --why2-- void printId(); // protected void printName(); --why2-- public void printName(); // void printId() { // System.out.println(id); // } // void printName() { // System.out.println(name); // } } |
1 2 3 4 5 6 7 8 9 | public class Super implements Interface { public void printId() { System.out.println(id); } public void printName() { System.out.println(name); } } |
1 2 3 4 5 6 7 | public class Main { public static void main(String[] args) { Super s = new Super(); s.printId(); s.printName(); } } |
さっそくインターフェースから見ていきましょう。
コメントアウトしている部分は外すとすべてコンパイルエラーになる部分です。
why1では変数宣言をしていますが、インターフェースでは暗黙でpublic static finalが付きますので
無理やり定数にさせられるので必ず中身を書かなければなりません。
why2ではメソッドのアクセス修飾子にprivateやprotectedは指定できないためエラーとなります。
その下ではメソッドの処理内容まで書いていますが、インターフェースではメソッドの処理内容は書かずにインターフェースを実装するクラスにて処理内容を書くことになっています。
このように継承時のスーパークラスと似ているので注意してください。
今日は以上です。
次回もインターフェースについてやっていこうと思います。