学习日志-abstract class and interface
学一点记一点,免得忘记..
看了很多前辈写的关于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