学一点记一点,免得忘记..
看了很多前辈写的关于abstract class and interface的文章,自己也试着去梳理了一遍。
1.抽象类不能实例化。
2.抽象类可以有构造方法,可以在其派生类中调用。
3.抽象类中的抽象方法(没有方法体)在派生类中必须重写,非抽象方法(有方法体)可以不重写。
4.抽象类可以有字段,属性,方法,构造函数等成员。
5.抽象类对于接口只能满足单一继承。
代码
abstract
class
Myabstract
{
public Myabstract()
{
public Myabstract()
{
Console.WriteLine(
"
Abstract class constructors
"
);
}
public abstract void abstractMethod();
public void Method()
{
Console.WriteLine( " Myabstract Method " );
}
}
public abstract void abstractMethod();
public void Method()
{
Console.WriteLine( " Myabstract Method " );
}
}
1.接口不能实例化。
2.接口不可以有构造方法。
3.接口中的方法不需要方法体,在派生类中必须重写方法。
4.接口不可以有字段。
5.接口的方法不需要修饰符,其含义类似public。
6.接口可以满足“多继承”。
interface
MyInterface
{
void interfaceMethod();
}
{
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 " );
}
}
{
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();
}
}
{
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