IT未経験で「Java Bronze」合格を目指します!
【概要】
・まきさん(仮名)と申します。
・30代前半で未経験からシステムエンジニアに転職を目指しています。
・すこしでも有利になればと思い、最初Java Silverを受験しましたが、正解率40%弱で完敗。。。
→8/7(日)に下位資格であるJava Bronzeを受験しましたが、正解率51%でこちらも完敗。。。
・Java Bronzeは少なくとも受からないとまずいと思い、9月末までに再受験予定。
・毎日、勉強で気づいたことなどを投稿予定です。
【勉強1日目】
■オーバーライドとオーバーロードの違い
<オーバーライドのルール>
・戻り値、メソッドのシグネチャ(メソッド名、引数の型、数、順番)がすべて同じ。
・アクセスレベルが親クラスと同じか緩い制限であること(例:親クラスがprotectedなら子クラスはpublicかprotectedを指定可能)。
備考:必須ではないが、オーバーライドするメソッド名の上に@Override(オーバーライドアノテーション)を付与するとメソッド名が間違っている時にエラーが出て気が付ける。
<オーバロードのルール>
・継承したクラスのメソッドをオーバーロードする際に、同じクラス内ではシグネチャ(この場合は、メソッド名以外の引数の型、数、順番)が重複してはいけない(メソッド名以外のシグネチャがどれかひとつは異なる)。
<オーバーライドの例>
// MainクラスでクラスBをインスタンス化しgreetingメソッドを実行
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
B b = new B();
b.greeting();
}
}
// 英語であいさつするクラスAを作成
public class A {
public void greeting() {
System.out.println("Hello");
}
}
// Aクラスをオーバーライド(上書き)して日本語であいさつするクラスBを作成
public class B extends A {
@Override
public void greeting() {
System.out.println("こんにちは");
}
}
<オーバーロードの例>
// Addクラスのインスタンスを2つ生成して、引数の型が異なるaddメソッドを2つ実行
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
// 整数型の合計を求めるパターン
Add ad1 = new Add();
ad1.add(1, 2);
// 浮動小数点型の合計を求めるパターン
Add ad2 = new Add();
ad2.add(1.5, 3.5);
}
}
// Addクラスの中に、それぞれ引数がことなるaddメソッドを実行
public class Add {
public void add(int a, int b) {
System.out.println("aとbの合計は" + (a + b) + "です。");
}
public void add(double a, double b) {
System.out.println("aとbの合計は" + (a + b) + "です。");
}
}
【勉強2日目】
■アクセス修飾子について
アクセス修飾子についての問題が苦手なので、調べてみました。
同じパッケージ内 | 同じパッケージ内 | 同じパッケージ | 別のパッケージ | 別のパッケージ | |
---|---|---|---|---|---|
アクセス修飾子 | 同じクラス | サブクラス | 他クラス | サブクラス | 他クラス |
public | 〇 | 〇 | 〇 | 〇 | 〇 |
protected | 〇 | 〇 | 〇 | 〇 | × |
なし | 〇 | 〇 | 〇 | × | × |
private | 〇 | × | × | × | × |
【勉強3日目】
■プリミティブ型について(基本型8つ)
boolean
byte
char
int
short
long
float
double