Java インタフェース

0~4に順番に押していく。

インタフェース Animalを定義。メソッド naku は自動的にpublic abstractになる。

DogはAnimalを単純に実装(implements)した状態。抽象メソッドnakuをオーバーライドしておらず、エラーになる。

Dogは抽象メソッドnakuをオーバーライドしたのでエラーは無くなる。Dogはnew可能。

Catは抽象メソッドnakuをオーバーライドせず、abstractクラスになっている。エラーは無いが、このクラスはnewできない。

Catクラスを継承し、naku をオーバーライドしている。抽象クラスでは無いので、このクラスはnewできる。
class Sample{
	public static void main(String[] args) {
Animal a = new Animal(); // エラー
Dog d = new Dog(); // 可能
Cat c = new Cat(); // エラー
MikeCat c = new MikeCat(); // 可能
} }
interface Animal{ void naku(); // 抽象メソッド }
class Dog implements Animal{
public void naku(){ System.out.print("わん"); }
}
abstract class Cat implements Animal{ }
class MikeCat extends Cat{ public void naku(){ System.out.print("ニャー"); } }