抽象メソッドを使用する理由は、抽象クラスを宣言した場合、そのメソッドを派生クラスに実装する必要があり、2 回問題が発生するため、なぜ抽象メソッドの代わりに単純メソッドを使用しないのですか????
4 に答える
abstract class Animal
{
abstract public void Voice(); //
}
class Dog : Animal
{
public void Voice()
{
Console.WriteLine("bark!");
}
}
class Cat: Animal
{
public void Voice()
{
Console.WriteLine("meow!");
}
}
抽象メソッド Voice を見てください。抽象的な動物の声だと想像したらどうだろう?
抽象メソッドは抽象クラスでのみ宣言できます。つまり、抽象クラスを実装するクラスは抽象メソッドを実装する必要がありますが、抽象クラスの他のメソッドはオーバーライドしたり、そのまま使用したりできます。
アブストラクトから(C# リファレンス)
•抽象メソッドの宣言は、抽象クラスでのみ許可されます。
•抽象メソッドの宣言は実際の実装を提供しないため、メソッド本体はありません。メソッド宣言は単にセミコロンで終了し、署名の後に中括弧 ({ }) はありません。実装は、非抽象クラスのメンバーであるオーバーライド メソッドoverride (C# リファレンス)によって提供されます。
abstract class A{
abstract void method1();
void method2(){
//implementation
}
}
class B extends A{
public void method1(){
// implementation
}
}
class C extends A{
public void method1(){
// implementation
}
}
B と C が A の 2 つのサブクラスであるとします。これらは共通のメソッド method2 を持ちますが、異なるメソッド method1 を持ちます。したがって、両方のクラスで A を拡張できます。共通のメソッドは自動的に継承されます。サブクラスに method1 を実装することで、独自の動作を定義できます。
抽象動作を実行し、抽象スーパークラスのコントラクトを維持する多くのサブクラスを持つ抽象クラスを作成することにより、オブジェクトのコーディング実装にとらわれないメソッドを作成できます。さまざまなサブクラスは、さまざまなソースからデータを取得したり、さまざまなことに最適化したり、さまざまな副作用を持ったりする可能性があります。
オブジェクト指向プログラミングの学校のクラスについて学んでいるなら、おそらく私のように、あなたが学ぶ原則のどれも意味をなさないでしょう - 小さなプログラムでは、そしてプログラミングの例を簡単に消化できるようにするために、それらは小さくなければなりません.OOPは通常、バゲージとボイラープレートを追加するだけです. . しかし、プログラムが大きくなればなるほど、より再利用可能になり、さまざまなコンテキストでより使いやすくなる必要があり、実行しなければならないことや正しく実行することがより巨大で壮大で広大になり、より多くの OOP テクニックがコーディングのプロセスとコードについて考えるプロセスを簡素化します。