Javaマスターへの道 資格勉強編 Part10
今日はシルバーの勉強をやっていきます。
では問題、以下のプログラムを実行するとどうなるでしょうか。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public interface A { @Override default String toString() { return "A"; } } public class B implements A { @Override public String toString() { return "B"; } } public class Main { public static void main(String[] args) { A a = new B(); System.out.println(a); } } |
この問題は引っ掛け問題なので、最後までプログラムを読んだ方には申し訳ない解答になってしまいます。
結論から言うとAインターフェースの時点で、コンパイルエラーとなってしまいます。
結論から言うとAインターフェースの時点で、コンパイルエラーとなってしまいます。
見たことがある方も多いのではないでしょうかtoString()は数値型の値を文字列に変換する際によく使う
Objectクラスにて定義されているメソッドなのですが
今回toString()のオーバーライドをしようとしていますが実はObjectクラスにて定義されているものは
オーバーライドができません。なのでインターフェースAの時点でコンパイルエラーになるが正解でした。
オーバーライドができません。なのでインターフェースAの時点でコンパイルエラーになるが正解でした。
では次の問題です。このプログラムを実行するとどうなるでしょうか
1 2 3 4 5 6 7 8 | public class Main { public static void main(String[] args) { for (int i = 0, j = 0; i < 5, j < 10; i++) { System.out.println(i++); j += 1; } } } |
では答え発表です。
for文では複数記述出来るところは初期化文と更新文だけなので
条件文を複数書いているこのプログラムはコンパイルエラーとなります。
for文は様々な書き方が出来るので訳が分からないという方は
参考書などのプログラムを実際にご自身の手で動かしながらプログラムを変えていくと覚えやすいです。
参考書などのプログラムを実際にご自身の手で動かしながらプログラムを変えていくと覚えやすいです。
私もですが実際に手を動かすことの経験値はとても高いと思っています。
本を読むだけじゃなく、YouTubeで勉強などよりも効率がいいと思うので
本を読むだけじゃなく、YouTubeで勉強などよりも効率がいいと思うので
分からないなら動かして試すというのは大事かもしれません。