// 抽象クラス LibraryResource
abstract class LibraryResource {
private boolean checkedOut;
// コンストラクタ
public LibraryResource() {
this.checkedOut = false;
}
// checkOut メソッド
public void checkOut() {
if (!checkedOut) {
checkedOut = true;
System.out.println("Resource checked out successfully.");
} else {
System.out.println("Resource is already checked out.");
}
}
}
// Book クラス
class Book extends LibraryResource {
private String title;
// コンストラクタ
public Book(String title) {
this.title = title;
}
// オーバーライドされたメソッド
@Override
public void checkOut() {
super.checkOut();
System.out.println("Book title: " + title);
}
}
// Magazine クラス
class Magazine extends LibraryResource {
private String name;
// コンストラクタ
public Magazine(String name) {
this.name = name;
}
// オーバーライドされたメソッド
@Override
public void checkOut() {
super.checkOut();
System.out.println("Magazine name: " + name);
}
}
// Main クラス
public class Main {
public static void main(String[] args) {
// 異なる資料のインスタンスを生成
LibraryResource book = new Book("Java Programming");
LibraryResource magazine = new Magazine("Science Today");
// 資料を貸し出しし、結果を表示
System.out.println("Checking out a book:");
book.checkOut();
System.out.println("\nChecking out a magazine:");
magazine.checkOut();
}
}
このプログラムでは、LibraryResource
抽象クラスを作成し、Book
クラスと Magazine
クラスがそれを継承しています。checkOut
メソッドがオーバーライドされ、main
メソッドで異なる資料が貸し出されるときの挙動が表示されます。