Java抽象化
抽象クラスとメソッド
データの抽象化は、特定の詳細を非表示にし、重要な情報のみをユーザーに表示するプロセスです。抽象化は、抽象クラスまたは
インターフェース
のいずれかを使用して実現できます(これについては次の章で詳しく説明します)。
キーワードはabstract
非アクセス修飾子であり、クラスとメソッドに使用されます。
- 抽象クラス:オブジェクトの作成に使用できない制限付きクラスです(オブジェクトにアクセスするには、別のクラスから継承する必要があります)。
- 抽象メソッド:抽象クラスでのみ使用でき、本体はありません。本体はサブクラス(から継承)によって提供されます。
抽象クラスは、抽象メソッドと通常のメソッドの両方を持つことができます。
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
上記の例から、Animalクラスのオブジェクトを作成することはできません。
Animal myObj = new Animal(); // will generate an error
抽象クラスにアクセスするには、別のクラスから継承する必要があります。ポリモーフィズムの章で使用したAnimalクラスを抽象クラスに変換してみましょう。
継承の章extends
から、クラスから継承するためにキーワードを使用していることを思い出してください。
例
// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
System.out.println("Zzz");
}
}
// Subclass (inherit from Animal)
class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
抽象クラスとメソッドを使用する理由と時期
セキュリティを実現するには-特定の詳細を非表示にし、オブジェクトの重要な詳細のみを表示します。
注:抽象化は、インターフェースを使用して実現することもできます。これについては、次の章で詳しく説明します。