前言:
现时小伙伴们对“抽象类中的方法必须是抽象的”可能比较关注,小伙伴们都想要知道一些“抽象类中的方法必须是抽象的”的相关知识。那么小编也在网上汇集了一些有关“抽象类中的方法必须是抽象的””的相关资讯,希望姐妹们能喜欢,咱们快快来学习一下吧!关注我,为你分享C#技术实现,感谢转发及点赞
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、 三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念 在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
public abstract class A
{
//用修饰符abstract将类成员修饰为抽象成员
//注意,抽象方法没有实现体(就是没有方法体)
public abstract void GoTo();//用修饰符abstract将类成员修饰为抽象成员
}
public class B : A
{
public override void GoTo()//也使用override关键字来实现抽象基类中的抽象方法
{
////实现上面抽象方法
throw new NotImplementedException();
}
}
抽象类-规则
抽象类不能实例化抽象类可以包含抽象方法和抽象属性,也可以包含普通的类成员只要一个类中有一个抽象方法吗,那么这个类就必须是抽象类。不能用sealed修饰符修改抽象类,这意味着抽象类不能被继承。从抽象类派生的非抽象类必须实现全部的抽象方法和抽象属性,包括继承来的。
抽象方法具有以下特性:
抽象方法是隐式的虚方法。只允许在抽象类中使用抽象方法声明因为抽象方法声明不提供实际的实例,重写的方法用override关键字,此重写方法是非抽象类的一个成员。实现由一个派生类中的方法来实现,重写的方法用override关键字,此重写方法是非抽象类的一个成员。子类继承抽象类后,可以使用override关键字覆盖父类中的抽象方法,并做具体的实现。也可以不实现抽象方法,留给后代实现,这时子类仍旧是一个抽象类,必须声明为abstract。继承的抽象方法不可以被隐藏。在抽象方法声明中使用static和virtual修饰符是错误的。
除了在声明和调用语法上不同外,抽象性的行为与抽象的方法一样
在静态属性上使用abstract修饰符是错误的。在派生类中,通过包括使用override修饰符的属性声明,可以重写抽象的继承属性。
最后一个很有必要单独提醒的是,实现抽象方法(在派生类中重写基类的抽象方法)必须与被实现的抽象方法的返回类型、方法名、参数(顺序和类型)都完全相同,不同的是使用的abstract 和override这两个关键字的不同
标签: #抽象类中的方法必须是抽象的 #抽象类可以有方法的实现吗 #抽象类可以有抽象方法吗