Как я могу предотвратить создание кода экземплярами базового класса? - PullRequest
1 голос
/ 28 марта 2011

Допустим, я создал Circle и Triangle классы, унаследованные от Shape класса. У меня вопрос, как я могу запретить коду создавать экземпляры класса Shape?

Ответы [ 4 ]

4 голосов
/ 28 марта 2011

Вы создаете класс Shape абстрактный . Это означает, что это незаконченный класс, служащий базой для других классов, которые предоставляют дополнительную функциональность.

Например, если у вас есть несколько классов для загрузки данных, у вас может быть абстрактный класс DataLoader и конкретные классы DatabaseLoader , XmlLoader ...

1 голос
/ 28 марта 2011

Вы можете сделать класс Shape как abstract .

public abstract class Shape {

//your code

}
1 голос
/ 28 марта 2011

Дайте Shape защищенный конструктор. Круг и Треугольник могут по-прежнему вызывать их из своих собственных конструкторов. Но другие не могут.

Данте Джинаг, конечно, подходит для Java, я предполагал, что C ++

0 голосов
/ 28 марта 2011

Какой язык программирования вы используете?

В общем случае создание объекта - это выделение памяти для его членов и вызов конструктора.Если ваш класс Shape не имеет членов - память не будет выделена.И если у него пустой конструктор - на этом шаге тоже ничего не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...