Gau*_*raa 19 language-agnostic oop
这是我脑海中的一个场景,我用谷歌搜索,很多但是得到了答案
"Abstract类没有实现方法,所以我们不能创建对象""'Abstract'这个词指示编译器不要创建类的对象"
但是在一个简单的类中我们有所有的虚方法,能够创建一个对象???
此外,我们可以定义修改为Abstract类构造函数的不同访问,如private,protected或public.
我的搜索终止了这个问题:
为什么我们不能创建Abstract类的对象?
Mar*_*ell 60
抽象类型主要定义为无法创建的抽象类型.您可以创建它的子类型,但不能创建该类型的子类型.CLI不允许您这样做.
一abstract类有一个protected构造函数(默认)允许派生类型进行初始化.
例如,base-type Stream是抽象的.没有派生类型,数据会在哪里?调用方法时会发生什么abstract?调用方法没有实际的实现方式.
fro*_*die 21
因为它是抽象的,一个对象是具体的.抽象类有点像模板,或者是空/部分空结构,您必须先扩展它并在它之前构建它.
以"动物"抽象类为例.没有"纯粹的"动物 - 有特定类型的动物.所以你可以实例化Dog and Cat和Turtle,但你不应该能够实例化普通动物 - 这只是一个基本的模板.并且所有动物都有一些共同的功能,例如" makeSound()",但是不能在动物基础上定义.所以如果你可以创建一个Animal对象,你会打电话makeSound(),给对象如何知道要发出的声音?