メソッド定義だけして、そのような処理を実装するかは継承先のクラスに任せるというものがあります。
このメソッドを抽象メソッドと言います。
そして、抽象メソッドが定義されているクラスを抽象クラスと言います。
なぜそのようなメソッドを作成するのか
中には、「この実装をしないと、このクラスの存在意義がなくなる。でも、処理を実装しようにも、呼ばれる所によって処理が変わるので実装もできない」というものがあります。
例えば、スマホを操作していて、画面をタップしたとしましょう。
当然、画面をタップしたら、何か処理が行われて欲しいわけですが、タップした場所、タイミングに応じて処理の内容は変わります。
そういう時、スマホ本体側でなんの処理を行うか決めることはできない。でも、タップした時に何か処理が行われて欲しいということになります。
そういう時に使うのが抽象メソッドです。
抽象クラス・抽象メソッドの定義の仕方
public abstract class クラス名 {
//抽象メソッドの定義
abstract メソッドの型名 メソッド名();
}
//抽象メソッドの定義
abstract メソッドの型名 メソッド名();
}
継承されることが前提のため、必然的にpublicがつきます。
また、抽象クラスを継承したら、継承した時点で、親クラスの抽象メソッドをオーバーライドしないとエラーになります。
実例
public abstract class Abst { abstract void methodA(); }
public class Sample extends Abst { public static void main(String[] args) { } @Override void methodA() { System.out.println("定義だけされたメソッド"); } }