このコードは正しいです。抽象クラス Item
には、一つの抽象メソッド calcPrice
と、一つの具体的なメソッド print
が含まれています。この構文は問題ありません。具体的なメソッド print
には実装が含まれており、抽象メソッド calcPrice
には abstract
キーワードが付いています。
最終的なコードは以下の通りです:
abstract class Item {
public abstract int calcPrice(Item item);
public void print(Item item) {
/* do something */
}
}
この形式であれば、抽象クラスの定義として正しく、Javaコンパイラもエラーを出さないでしょう。
追記
はい、このコードにはいくつかの間違いがあります。抽象クラス Item
には抽象メソッドが含まれていますが、抽象メソッドには abstract
キーワードが必要です。また、抽象メソッドは実装を持たないため、セミコロンで終わる必要があります。
修正したコードは以下のようになります:
abstract class Item {
public abstract int calcPrice(Item item);
public abstract void print(Item item);
}
このように、メソッドの前に abstract
キーワードを追加し、メソッドの中身を削除してセミコロンで終わるようにします。
Top comments (0)