ソフトウェアは、支店の製品でインタフェースと抽象クラスは、工業用ソフトウェアエンジニアリングです。
定義
特定のクラス - >抽象クラス - >インタフェース:より多くの抽象的な、何かが内部少なく実現。
抽象クラスを作るために生まれ基底クラス
メンバ関数が完全にされていない抽象的、キーワードを抽象化修正するクラスで実装されています。
許可されていない抽象クラスの例として、基底クラス(継承)動作を行っている、図2は、基本型変数(誘導体)のサブクラスのインスタンスへの参照です。抽象サブクラス実装方法、上書き書き換えと同様の仮想関数は、また、純粋仮想メソッド(C ++)としても知られています。
オープンクローズ原理
バグの修復と修正能力のために、コードのパッケージ安定したメンバ関数のクラスのメンバ関数を変更しないようにされていない場合の効果に、不確実性のメンバーは継承サブクラスの抽象メンバーとしてパッケージ化することを。
using System;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
Vehicle v=new Car();
v.Run();//现在我们用Vehicle类型的变量去引用car类型的实例,是无法获取到方法的。
}
}
class Vehicle
{
public void Stop()
{
Console.WriteLine("Stopping");
}
}
class Car:Vehicle
{
public void Run()
{
Console.WriteLine("car is running");
}
}
class Truck:Vehicle
{
public void Run()
{
Console.WriteLine("Truck is running");
}
}
}
using System;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
Vehicle v=new Car();
v.Run();
}
}
class Vehicle
{
public void Stop()
{
Console.WriteLine("Stopping");
}
public virtual void Run()
{
}
}
class Car:Vehicle
{
public override void Run()
{
Console.WriteLine("car is running");
}
}
class Truck:Vehicle
{
public override void Run()
{
Console.WriteLine("Truck is running");
}
}
}
Vehicleクラスは抽象クラスになることができますので、同じ名前のサブクラスがオーバーライドに追加します
abstract class Vehicle
{
public void Stop()
{
Console.WriteLine("Stopping");
}
public abstract void Run();
}
デカップリングは、インタフェース生まれている- 完全に実装されていないロジッククラス
インタフェースは、純粋抽象クラス(具体的な内容のないメンバ関数)と開示され、前者は省略し、公共される抽象クラス名とメンバーの機能に加え、インターフェースのみのクラス名、メンバ関数のボイド+のクラス名でなければなりません。
抽象クラスとインタフェースとの間の差
抽象クラスは、フィールドと固有のロジックを表す非パブリックメンバ持つことができ、
およびインタフェースのみメンバ関数を、そしてすべての公共、公共の暗黙的です。
それらは唯一の変数、クラスのインスタンスに特定の参照を宣言するために使用することができ、インスタンス化できません。
サプリメント
ソリッドデザインパターン
単一責任の原則
開口部の原則と閉じ
リヒター置換原則
インタフェース棲み分け原理
依存関係逆転の原則
固体の原則のニーズ熟練使用することを学ぶデザインパターンは、デザインパターンは、これらの基本原則から進化しています。