事实上的(virtual)和抽象方法(abstract method)的区别

在C#中,abstract关键字可以与类和方法一起使用。抽象方法是那些缺乏任何形式的实现的方法。然而,实现逻辑是由派生自它们的非抽象类获得的。这是通过重写该方法实现的。由于没有实际实现,方法的主体仍然是空的。需要注意的是,抽象方法的声明只能在抽象类中进行。无法初始化的类称为抽象类。从抽象类继承的类必须实现抽象类中声明为抽象的所有方法。...
关键区别:抽象方法是声明但没有任何实现的方法。虚拟方法用于实现基于类型的多态性。派生类可以灵活地使用关键字“override”重新实现基类的虚方法。

在C#中,abstract关键字可以与类和方法一起使用。抽象方法是那些缺乏任何形式的实现的方法。然而,实现逻辑是由派生自它们的非抽象类获得的。这是通过重写该方法实现的。由于没有实际实现,方法的主体仍然是空的。需要注意的是,抽象方法的声明只能在抽象类中进行。无法初始化的类称为抽象类。从抽象类继承的类必须实现抽象类中声明为抽象的所有方法。

事实上的(virtual)和抽象方法(abstract method)的区别

例如-

公共抽象类exampleAbstractClass

{

public abstract void exampleAstractMethod();

公共虚拟void nonAbstractMethod()

{

C***ole.WriteLine(“方法中定义了实现”);

}

类normalNoAbstractClass:ExampleAstractClass

{

public override void exampleAstractMethod()

{

C***ole.WriteLine(“重写ExampleAstractClass类的ExampleAstractMethod”);

}

}

Virtual也是与修改方法、属性、索引器或事件声明相关联的关键字。使用此关键字可以修改派生类中声明的实体。在本例中,派生类重写了基类中声明的虚方法。

事实上的(virtual)和抽象方法(abstract method)的区别

阶级基础

{

公共虚空测试()

{

C***ole.WriteLine(“Base.Test”);

}

}

派生类:基

{

公共覆盖无效测试()

{

C***ole.WriteLine(“派生的.Test”);

}

}

虚拟方法用于实现基于类型的多态性。派生类可以灵活地使用override关键字重新实现基类的虚方法。虚修饰符和抽象修饰符不能与静态修饰符、虚修饰符或重写修饰符一起使用。

虚拟法与抽象法的比较:

 

虚方法 抽象方法
定义 虚拟方法用于实现基于类型的多态性。 抽象方法是声明但没有任何实现的方法
实施 是的,可以有实现 不,不能有任何实现
需要重写 非强制性 必修课
用于将其与其他类型的方法区分开来的关键字 事实上的 摘要
等级 可以实例化包含虚拟方法的类。 无法实例化包含抽象方法的类。只能继承。
范围 虚拟方法的作用域仅限于成员。 将方法的作用域抽象为成员和类。
要执行的方法(对象基类类型) 只有在具体类中没有提供实现的情况下,才会调用父实现。 具体实施
要执行的方法(对象具体类类型) 具体实施 具体实施

  • 发表于 2021-07-13 21:02
  • 阅读 ( 174 )
  • 分类:通用

你可能感兴趣的文章

抽象类(abstract class)和c中的接口#(interface in c#)的区别

...让我们详细讨论一下两者的理论方面。 什么是抽象类(an abstract class)? 抽象类是一种特殊类型的类,它充当其他类的基,不能实例化。抽象类的实现逻辑由其派生类提供。为了使一个类抽象,使用了“abstract”修饰符,这意味着...

  • 发布于 2021-06-25 03:34
  • 阅读 ( 359 )

抽象类(abstract class)和java接口(interface in java)的区别

...接口的区别 Java中抽象类和接口的“多重继承”——尽管事实上抽象类和接口都主要用于抽象,但它们彼此有很大的不同。抽象类是类,接口是接口。这意味着虽然一个接口只能扩展另一个Java接口,但一个抽象类可以在Java中实...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 306 )

抽象(abstraction)和虚拟化(virtualization)的区别

...但它并不总是隐藏底层的细节。虚拟机的概念并不新鲜;事实上,自从20世纪60年代IBM开发出第一台提供对大型机交互访问的虚拟机以来,虚拟机就已经存在了。抽象实现了云计算的关键好处,即共享的、无处不在的访问。抽象...

  • 发布于 2021-06-26 12:32
  • 阅读 ( 493 )

数据抽象(data abstraction)和封装(encapsulation)的区别

...键术语 数据抽象、封装、面向对象 什么是数据抽象(data abstraction)? 数据抽象是指隐藏内部细节,只显示功能。换句话说,它隐藏了实现细节,只是向外界展示了特性。一个现实世界的例子是电视。用户不需要知道内部电子电...

  • 发布于 2021-06-30 17:01
  • 阅读 ( 1223 )

抽象类(abstract class)和java接口(interface in java)的区别

...键术语 抽象类、接口、多重继承 什么是java中的抽象类(abstract class in java)? 用abstract关键字声明的类称为抽象类。抽象类既可以有抽象方法,也可以有非抽象方法。类可以扩展抽象类并实现抽象类的抽象方法。不能从抽象类创...

  • 发布于 2021-07-01 01:29
  • 阅读 ( 284 )

工厂模式(factory pattern)和抽象工厂模式(abstract factory pattern)的区别

...ShapeFactory以获取所需的对象类型。 什么是抽象工厂模式(abstract factory pattern)? 抽象工厂模式使用超级工厂并创建其他工厂。它也被称为工厂的工厂。在这种模式中,接口创建相关对象的工厂,而不显式指定它们的类。换言之,...

  • 发布于 2021-07-01 06:13
  • 阅读 ( 192 )

数据隐藏(data hiding)和抽象(abstraction)的区别

...总的来说,数据隐藏有助于保护类的成员。 什么是抽象(abstraction)? 抽象隐藏了内部细节,只向用户显示功能。换句话说,它隐藏了实现细节,并向外界展示了功能。例如,假设一个真实世界的应用程序,例如移动电话。用户不...

  • 发布于 2021-07-01 13:14
  • 阅读 ( 315 )

封装(encapsulation)和c语言中的抽象#(abstraction in c#)的区别

...t方法赋值,public get方法获取值。 什么是c语言中的抽象#(abstraction in c#)? 抽象有助于隐藏实现细节,只允许向用户显示功能。假设一台电视机的遥控器。用户不需要知道控制器的内部电路就可以使用它。抽象与此类似。它关注...

  • 发布于 2021-07-01 14:04
  • 阅读 ( 379 )

虚函数(virtual function)和纯虚函数(pure virtual function)的区别

虚函数和纯虚函数的主要区别在于虚函数是基类中使用Virtual关键字声明的函数,而纯虚函数是基类中没有函数定义的虚函数。 多态性是面向对象的一个重要概念。它允许一个对象有多种形式。有两种类型的多态性称为早期结合...

  • 发布于 2021-07-01 14:13
  • 阅读 ( 487 )

抽象类(abstract class)和混凝土等级(concrete class)的区别

... 抽象,抽象类,类,具体类,面向对象 什么是抽象类(abstract class)? OOP中的一个主要概念是抽象。它是一个隐藏内部细节并只向用户显示功能的过程。抽象类是实现抽象的一种方法。Java等编程语言使用抽象关键字来表示抽象类...

  • 发布于 2021-07-01 18:04
  • 阅读 ( 1065 )
mtboss
mtboss

0 篇文章

相关推荐