三、两者区别: 总结:抽象方法是只有方法名称

时间:2022-01-18 06:09:23

一、抽象要领:只在抽象类中界说,要领修饰符不能使用private,virtual,static.

抽象要领如下示:

public abstract class People   //声明一个抽象类

{

public abstract void study();  //抽象要领只能界说在抽象类中。

}

public class Student:People   //担任抽象类

{

public  override void study()     //重写抽象类的抽象要领

{

Console.WriteLine("好好学习,天天向上!");

}

}

public class Program

{

static void Main(string[] args)

{

Student t= new Student();//实例化派生类

People  p= t;   //使用派生类东西实例化抽象类

//以上两句等价于  People p = new Student();//使用派生类东西实例化抽象类;

p.study(); //使用抽象类东西挪用抽象类中的抽象要领study    

}

}

总结:(1)象要领只能声明在抽象类中,使用关键字abstract

(2)抽象类中的抽象要领必需被子类重写。

【抽象要领没有要领体,子类必需重写要领体!!,因此抽象要领可以当作是一个没有要领体的虚要领】

二、虚要领:使用virtual修饰的要领:

虚要领可以有要领体。具体示例如下:

public class BaseClass         //创建一个基类

{

public virtual string GetName()    //使用virtual关键字创建父类中的虚要领

{

return "父类虚要领体":     

}

}

public class SubClass:BaseClass    //子类担任父类

{

public override string GetName();   //子类重写父类虚要领

{

return "重写父类虚要领!";

}

}

以上的示例:父类中的虚要领被派生类重写了。

注意事项:virtual修饰符不能与private、static、abstract、override修饰符同时使用。

ps:override修饰符不能与new 、static、virtual修饰符同时使用,并且重写要领只能用于重写基类中的虚要领。

虚函数的限制:

* 虚函数仅适用于有担任关系的类东西,所以只有类的成员函数才华说明为虚函数;

*静态成员函数、内联函数、结构函数不能是虚函数;

*析构函数可以是虚函数。

三、两者区别:

总结:抽象要领是只有要领名称,,没有要领体(也就是没有要领具体实现),子类必需重写父类抽象要领;

虚函数是该要领有要领体,但是子类可以笼罩,也可不笼罩。

(1)虚要领有要领体,抽象要领没有要领体。抽象要领是一种强制派生类笼罩的要领,否则派生类将不能被实例化;

(2)抽象要领只能在抽象类中声明,虚要领不是;

(3)派生类必需重写抽象类中的抽象要领,虚要领例不须要。