Oop 如何防止代码创建基类的实例?

Oop 如何防止代码创建基类的实例?,oop,language-agnostic,inheritance,Oop,Language Agnostic,Inheritance,假设我创建了从Shape类继承的Circle和Triangle类。我的问题是如何防止代码创建Shape类的实例?为Shape提供一个受保护的构造函数。圆和三角形仍然可以从它们自己的构造函数调用它们。但其他人不能 Dante Jinag当然适合Java,我假设C++提供了一个受保护的构造函数。圆和三角形仍然可以从它们自己的构造函数调用它们。但其他人不能 Dante Jinag当然适合Java,我假设C++可以将Shape类设置为抽象的 public abstract class Shape {

假设我创建了从
Shape
类继承的
Circle
Triangle
类。我的问题是如何防止代码创建
Shape
类的实例?

为Shape提供一个受保护的构造函数。圆和三角形仍然可以从它们自己的构造函数调用它们。但其他人不能


Dante Jinag当然适合Java,我假设C++

提供了一个受保护的构造函数。圆和三角形仍然可以从它们自己的构造函数调用它们。但其他人不能


Dante Jinag当然适合Java,我假设C++

可以将Shape类设置为抽象的

public abstract class Shape {

//your code

}

您可以将Shape类设置为抽象的

public abstract class Shape {

//your code

}

你在用什么编程语言


通常,对象创建是为其成员分配内存和调用构造函数。如果您的Shape类没有成员,则不会分配内存。如果它有空构造函数,那么在这个步骤中也不会发生任何事情。

您使用的是什么编程语言


通常,对象创建是为其成员分配内存和调用构造函数。如果您的Shape类没有成员,则不会分配内存。如果它有空构造函数,那么在这一步也不会发生任何事情。

您将Shape类抽象化。这意味着它是一个未完成的类,用作提供附加功能的其他类的基础


例如,如果您有几个加载数据的类,那么您可以有一个抽象类DataLoader和一个具体类DatabaseLoader,XmlLoader…

您可以使Shape类抽象。这意味着它是一个未完成的类,用作提供附加功能的其他类的基础


例如,如果有几个类加载数据,那么可以有一个抽象类DataLoader和一个具体类DatabaseLoader,XmlLoader…

如何使类抽象取决于语言,但这是正确的一般答案。如何使类抽象取决于语言,但这是正确的一般答案。