學一點記一點,免得忘記..
看了很多前輩寫的關於abstract class and interface的文章,自己也試著去梳理了一遍。
abstract class :
1.抽象類別不能執行個體化。
2.抽象類別可以有構造方法,可以在其衍生類別中調用。
3.抽象類別中的抽象方法(沒有方法體)在衍生類別中必須重寫,非抽象方法(有方法體)可以不重寫。
4.抽象類別可以有欄位,屬性,方法,建構函式等成員。
5.抽象類別對於介面只能滿足單一繼承。
代碼
abstract class Myabstract
{
public Myabstract() { Console.WriteLine("Abstract class constructors"); }
public abstract void abstractMethod();
public void Method()
{
Console.WriteLine("Myabstract Method");
}
}
interface:
1.介面不能執行個體化。
2.介面不可以有構造方法。
3.介面中的方法不需要方法體,在衍生類別中必須重寫方法。
4.介面不可以有欄位。
5.介面的方法不需要修飾符,其含義類似public。
6.介面可以滿足“多繼承”。
interface MyInterface
{
void interfaceMethod();
}
Class:
代碼
class MyClass : Myabstract,MyInterface
{
public MyClass()
: base()
{
}
public override void abstractMethod()
{
Console.WriteLine("MyClass Override Abstract Method");
}
public void interfaceMethod()
{
Console.WriteLine("MyClass Override Interface Method");
}
}
Main Method:
代碼
class Program
{
static void Main(string[] args)
{
MyClass myclass = new MyClass();
myclass.abstractMethod();
myclass.interfaceMethod();
myclass.Method();
}
}
輸出:
Abstract Class Constructors
MyClass Override Abstract Method
MyClass Override Interface Method
Myabstract Method