Javaは継承を中心的な機能としてサポートしていて、継承を使うことで、抽象化をはじめとする多くのオブジェクト指向の原則を実現できます。
クラスはextendsキーワードを使って別のクラスを継承でき、implementsキーワードを使ってインターフェースを実装できます。
アクセス修飾子は、クラスのメンバー変数やメソッドを、他のクラス(あるいはコードのどこか)からアクセスできるかどうかに関するルールを定めます。
アクセス修飾子は次の4つです。
privatepublicprotectedこれらについては、こちらの記事で詳しく読むことができます。
これらの概念はとてもよく似ていて、しばしば混同されます。
interface Animal() {
public void bark();
}
class Dog implements Animal {
public void bark() {
System.out.println("Bark");
}
}
ここでは、DogはAnimalとのIS-A関係にあります。
interface Engine {
}
class Car {
private Engine engine;
}
ここでは、CarはEngineとのHAS-A関係にあります。