継承する
複数のクラス間に共通の属性がある場合は、親クラスを作成し、親クラスでこれらの属性を定義して、これらのクラスに親クラスを継承させることで、各クラスで属性を繰り返し定義することを避けることができます。
public class Person {
protected String name; // 共同的属性
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Student extends Person {
private int grade; // 学生特有的属性
// 学生特有的方法
public void setGrade(int grade) {
this.grade = grade;
}
public int getGrade() {
return grade;
}
}
public class Teacher extends Person {
private String subject; // 教师特有的属性
// 教师特有的方法
public void setSubject(String subject) {
this.subject = subject;
}
public String getSubject() {
return subject;
}
}
上記の例では、Personクラスが共通の属性名を定義しており、StudentクラスとTeactureクラスがそれぞれPersonクラスを継承することで共通の属性を持っている。これにより、Student クラスと Teacher クラスで name 属性の定義を繰り返すことがなくなります。
インターフェース
複数のクラスに同じ動作が存在する場合は、インターフェイスを使用してこれらの動作を定義し、それらのクラスにそのインターフェイスを実装させることができます。属性のアクセス方法はインターフェースで定義できます。
public interface Identifiable {
String getId(); // 声明获取ID的方法
}
public class Student implements Identifiable {
private String id; // 学生特有的属性
// 实现接口定义的方法
public String getId() {
return id;
}
}
public class Teacher implements Identifiable {
private String id; // 教师特有的属性
// 实现接口定义的方法
public String getId() {
return id;
}
}
上記の例では、Identifiable インターフェイスで ID を取得するメソッドが定義されており、Student クラスと Teacher クラスの両方がインターフェイスを実装して ID を取得するメソッドを実装しています。これにより、同じ動作が均一に定義され、コードの重複が回避されます。
継承とインターフェイスを使用すると、コードを最適化し、同じプロパティの定義の繰り返しを回避し、コードの保守性と再利用性を向上させることができます。同時に、オブジェクト指向設計原則への適合性が向上し、コードのカプセル化とスケーラビリティが向上します。