在接口中使用默认和静态方法



如果需要保留已实现的方法和方法定义,我们将使用抽象类,而如果只需要保留方法定义,则使用接口。但在java和C#中,我们可以使用默认方法和静态方法在接口中包含实现。那么,如果我们可以通过使用接口来实现抽象类的目的,那么它有什么用呢?

拥有抽象类有一些原因。

抽象类可以继承接口,但不能继承接口

抽象类可以继承接口。但是,接口不能继承抽象类:

public interface ABar { }
public abstract class Bar : IFoo { }

但是,这不符合条件:

public interface IFoo : ABar
{ 
}
public abstract class ABar
{ 
}

抽象类可以有构造函数、字段(可以保存状态(

抽象类可以有构造函数、字段。通过具有字段,可以保持状态。但是,接口不能有它们。

public abstract class ABar
{
public int test; // some state
public ABar()
{
}
}

最新更新