見出し画像

JAVAってとっつきにくい

JAVAを使えるようになりたくて、会社の勉強会に参加した。

まずは、JavaWebアプリ開発、Java bronze資格取得と続けて参加している。

しかし、今だにとっつきづらいったらありゃしない。

そこで、私の相棒のAIチャット君にお願いしてみた。

『1から10まで足す動くJavaのコードを書いてください。』

いや、最近仕事していて、人間よりも素早く答えを出してくれるAIチャット君はなかなか役に立つと思っている。

下記がAIチャット君の答え。

以下に、1から10まで足すJavaのコードを示します。

class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum += i;
        }
        System.out.println("合計: " + sum);
    }
}

このコードでは、forループを使用して変数`i`を1から10まで順番に増やしながら、`sum`に加算していきます。最後に、`sum`を出力しています。

って答えてくれたから、
『下記は具象クラスだけのコードですよね。抽象クラスってどういう場合に必要になるのか具体例を出して説明してください。

public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("合計: " + sum);
}
}』
って聞いてみた。

はい、先程のコードは具象クラスの例です。抽象クラスは、具体的なインスタンスを作成するための設計図となるクラスです。以下に抽象クラスが必要となる具体例を示します。

例えば、動物を表すクラスを作成する場合を考えてみましょう。動物には共通の特徴がありますが、それぞれの動物には異なる振る舞いや特徴が存在します。この場合、抽象クラスを使用して、共通の特徴を持つけれども具体的な動物のクラスである「犬」や「猫」などを作成することができます。

abstract class Animal {
    String name;

    // 共通の特徴やメソッドを定義する
    abstract void sound();

    // 異なる振る舞いや特徴を持つメソッドを定義する
    abstract void move();

}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("ワンワン");
    }

    @Override
    void move() {
        System.out.println("走る");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("ニャー");
    }

    @Override
    void move() {
        System.out.println("ジャンプする");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.sound(); // 出力: ワンワン
        dog.move(); // 出力: 走る

        Animal cat = new Cat();
        cat.sound(); // 出力: ニャー
        cat.move(); // 出力: ジャンプする
    }
}

上記の例では、共通の特徴である「名前(name)」を抽象クラスで定義し、異なる動物ごとの具体的な振る舞いや特徴をサブクラスでオーバーライドしています。また、抽象クラスのインスタンスは作成できないため、具体的な動物である犬(Dog)や猫(Cat)のインスタンスを作成して使用します。

このように、抽象クラスは共通の特徴や振る舞いを持つクラスの設計に使用され、具体的なクラスが抽象クラスを継承して特定の機能を実装することができるようになります。

なるほど、確かに勉強会の講師は動物を例に説明してくれたけど、いま一つ要領が得られなかった。

が、さすが我が相棒AIチャット君は教え方が上手よね。

今月はAIチャット君先生に師事するかな。

この記事が気に入ったらサポートをしてみませんか?