Oop 这里需要什么抽象类?

Oop 这里需要什么抽象类?,oop,Oop,他们最近问我的一个面试问题 什么是C#中的抽象类? 抽象类-是一个不能实例化的类,可以包括抽象或实例方法、构造函数等 实例方法可用于为继承此抽象类的所有派生类实现公共功能 好的……现在的问题是为什么我们需要一个抽象类来实现公共功能。我可以在基类中加入相同的公共功能,让派生类可以访问基类方法..对吗??如果是这样的话,就不用抽象类了。。我能去参加基本班吗??或者将公共功能放在抽象类中,让派生类访问这些方法 如果我的基类可以解决公共功能的实现,那么为什么我们需要一个抽象类来实现公共功能呢 需要帮助才

他们最近问我的一个面试问题

什么是C#中的抽象类?
抽象类-是一个不能实例化的类,可以包括抽象或实例方法、构造函数等

实例方法可用于为继承此抽象类的所有派生类实现公共功能

好的……现在的问题是为什么我们需要一个抽象类来实现公共功能。我可以在基类中加入相同的公共功能,让派生类可以访问基类方法..对吗??如果是这样的话,就不用抽象类了。。我能去参加基本班吗??或者将公共功能放在抽象类中,让派生类访问这些方法

如果我的基类可以解决公共功能的实现,那么为什么我们需要一个抽象类来实现公共功能呢


需要帮助才能正确理解…

将抽象类用作基类。有时,您可能希望实现公共功能,但不直接实例化基类类型的实例,因此可以使用抽象类来代替。

抽象类是基类,但它是基类,通常具有一些抽象成员。这允许您在调用这些抽象成员的抽象类中编写代码,但不需要任何实现。。。然后,它强制从抽象类派生的具体类实现这些成员

拥有一个抽象类而不仅仅是一些成员抛出
NotImplementException
s的具体基类的好处是:

  • 派生类被强制(在编译时)实现相关的成员
  • 客户端不能仅仅创建基类的实例;他们必须使用一个具体的类来提供适当的“缺失”成员

例如,前几天我在Json.NET中编写了一个抽象类,扩展了
JsonConverter
。其目的是让它成为我的项目中任何结构转换器的基类——它将处理所有可为null的类型转换(并将空JSON反序列化为null值),让派生类可以自由地只关注特定于类型的部分。看看它(),看看它是否能让事情变得更清楚。

这样看,如果你正在编写一个应用程序来跟踪动物园动物,你会有猴子、大象、鳄鱼等课程。。。它们都是动物,所以你可以让它们继承一个动物的基类(因为它们都需要吃、呼吸等基本功能)。但是你永远不会有一种动物仅仅是一种动物,所以你会把动物抽象化,因为你永远不需要它的实例。

这个棘手的短语是

"partial implementation."

除了您在文章中提到的内容之外,抽象类不必实现所有函数,子类必须实现未实现的函数或声明为抽象。

抽象类是基类。它是一个成为底层的专家。。。。因此允许“polimorphism”的存在,这是面向对象编程最重要的事情之一。非常感谢你帮助我理解抽象类的需要