抽象类,虚方法,接口

这三样很多人容易混淆,在此总结一下

1. 虚方法 Virtual

基类中定义了虚方法,派生类中可以实现,也可以不实现,因为虚方法是有方法体的,如果要实现,派生类中用override重写该方法。

 public class father
{
/// <summary>
/// 我是一个虚方法 可被我的儿子直接使用,也可被我的儿子通过override重写。
/// </summary>
/// <param name="A"></param>
/// <param name="B"></param>
/// <returns></returns>
public virtual string getstr(string A, string B)
{
return A + B;
}
public virtual string getstr(string A, string B, string C)
{
return A + B + C;
}
}

 

2.抽象方法 Abstract

抽象方法只能在抽象类中定义,并且只有定义没有实现,所以继承抽象类的派生类必须实现抽象方法,同样是用override关键字重写。

public abstract class AbstractFather
{
/// <summary>
/// 我是抽象方法,请务必把我放在抽象类中。如果我的儿子乐意使用,就必须使用override重写
/// </summary>
public abstract void str();

public abstract string getstr();
}

3.接口 Interface

没有具体实现,派生类必须实现全部的方法。

public interface InterfaceTest
{

/// <summary>
/// 我是接口,请务必把我全部实现
/// </summary>
void Istr();
string Igetstr();
}

需要注意的是,不管哪种方法,修饰符都不能是private,如果定义成私有的则无法被派生类实现,因为不可访问。

posted @ 2019-07-27 17:54  luytest  阅读(270)  评论(0编辑  收藏  举报