C#の抽象化
抽象クラスとメソッド
データ抽象化は、特定の詳細を隠し、重要な情報のみをユーザーに表示するプロセスです。抽象化は、次のいずれかで実現できます。抽象クラスまたはインターフェイス(これについては、次の章で詳しく説明します)。
abstract
キーワードは、クラスとメソッドに使用されます。
- 抽象クラス:オブジェクトの作成に使用できない制限付きクラスです (アクセスするには、別のクラスから継承する必要があります)。
- 抽象メソッド:抽象クラスでのみ使用でき、本体はありません。本体は派生クラス (継承元)。
抽象クラスには、抽象メソッドと通常のメソッドの両方を含めることができます。
{.language-java .techis-white}
abstract class Animal
{
public abstract void animalSound();
public void sleep()
{
Console.WriteLine("Zzz");
}
}
上記の例から、Animalクラスのオブジェクトを作成することはできません。
{.language-csharp .techis-white .techis-border-red}
Animal myObj = new Animal(); // Will generate an error (Cannot create an instance of the abstract class or interface 'Animal')
抽象クラスにアクセスするには、別のクラスから継承する必要があります。ポリモーフィズムの章で使用した、Animalクラスを抽象クラスに変換しましょう。
継承の章で、クラスから継承するには:
記号を使用し、基本クラスのメソッドをオーバーライドするにはoverride
キーワードを使用することを思い出して下さい。
例
{.language-csharp .techis-white}
// Abstract class
abstract class Animal
{
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep()
{
Console.WriteLine("Zzz");
}
}
// Derived class (inherit from Animal)
class Pig : Animal
{
public override void animalSound()
{
// The body of animalSound() is provided here
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound(); // Call the abstract method
myPig.sleep(); // Call the regular method
}
}
抽象クラスとメソッドを使用する理由と時期
セキュリティを確保するには、特定の詳細を非表示にして、オブジェクトの重要な詳細のみを表示します。
注:抽象化は、インターフェースを使用して実現することも出来ます。これについては、次の章で詳しく説明します。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。