#13 Javaで学ぶクラスの基本
Javaは「オブジェクト指向」を徹底した言語で、クラスがプログラムの中心的な役割を果たします。この記事では、Javaにおけるクラスの基本と、継承の使い方を解説します。
クラスを作ってみる
public class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("こんにちは、" + name + "です");
}
}
クラス名と同じ名前のメソッドが「コンストラクタ」で、インスタンスを作る際に自動的に呼ばれます。
クラスからインスタンスを作る
Person person = new Person("太郎");
person.greet();
継承という仕組み
Javaには、あるクラスの機能を引き継いで新しいクラスを作る「継承」という仕組みがあります。
public class Student extends Person {
int grade;
Student(String name, int grade) {
super(name); // 親クラスのコンストラクタを呼ぶ
this.grade = grade;
}
@Override
void greet() {
System.out.println("こんにちは、" + grade + "年生の" + name + "です");
}
}
super(name)で親クラス(Person)のコンストラクタを呼び出し、@Overrideを付けることで親クラスのメソッドを意図的に上書きしていることを明示します。
抽象クラスという中間的な仕組み
共通の骨組みだけを決めて、具体的な実装はサブクラスに任せたい場合は、abstractを付けた抽象クラスを使います。
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
double radius;
Circle(double radius) { this.radius = radius; }
@Override
double area() { return radius * radius * Math.PI; }
}
抽象クラス自体はインスタンスを作れず、必ず継承してarea()のような抽象メソッドを実装する必要があります。
Javaならではの注意点
Javaでは、1つのファイルに書けるpublicなクラスは基本的に1つまでという決まりがあり、ファイル名もそのクラス名と一致させる必要があります。以前の記事でも触れましたが、この「ファイル名とクラス名の一致」は特に注意が必要なポイントです。また、@Overrideを付け忘れても動作自体は変わりませんが、付けておくことでメソッド名のスペルミスなどをコンパイル時に検出できるため、親クラスのメソッドを上書きする際は必ず付ける習慣をつけましょう。
まとめ
Javaのクラスはコンストラクタでインスタンスを初期化し、継承で機能を引き継げます。superや@Overrideも含め、オブジェクト指向の考え方の中心として、しっかり理解しておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Javaをもっと学びたい方には「スッキリわかるJava入門 第4版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿