題目描述

Java的抽象類別是一種不能被實體化的類別,它通常會作為一個父類別來讓底下的子類別繼承使用。



以下是抽象類別的範例:

abstract class Book
{
    String title;
    abstract void setTitle(String s);
    String getTitle()
    {
        return title;
    }

}

如果您想嘗試用如以下程式碼的方式建立一個抽象類別的實體物件,將會得到錯誤:

Book new_novel = new Book(); 

您必須建立其他的類別來繼承這個抽象類別,才可以用這個新類別來產生物件實體。

注意setTitle方法也是抽象的,沒有程式區塊(body),這表示繼承這個抽象類別的子類別,必須要實作出這個setTitle方法的程式區塊。

原題網址

https://www.hackerrank.com/challenges/java-abstract-class

範例輸入

A tale of two cities

範例輸出

The title is: A tale of two cities

解題概念

撰寫MyBook類別,繼承Book抽象類別,並實作出Book抽象類別的setTitle抽象方法。

參考答案

import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) {
        final Scanner sc = new Scanner(System.in);
        final String title = sc.nextLine();
        final MyBook new_novel = new MyBook();
        new_novel.setTitle(title);
        System.out.println("The title is: " + new_novel.getTitle());
    }
}

class MyBook extends Book {

    @Override
    String getTitle() {
        return title;
    }

    @Override
    void setTitle(final String s) {
        title = s;
    }

}

abstract class Book {

    String title;

    abstract void setTitle(String s);

    String getTitle() {
        return title;
    }

}