|   |   | 
| 
 | Delphi class abstract (версия Delphi XE7) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Ненавижу 1С гуру 12.11.14✎ 08:36 | 
        Описываю класс как абстрактный
 type MDObject=class abstract end; однако его экземпляры все равно можно создавать var x:MDObject; begin x:=MDObject.Create; x.Free; end вопрос, а в чем тогда смысл этой инструкции? | |||
| 1
    
        Serginio1 12.11.14✎ 10:39 | 
        А варнинги при компиляции есть?     | |||
| 2
    
        vde69 12.11.14✎ 10:45 | 
        на сколько помню, это именно для того и сделано, что-бы не выдавало ошибку....
 абстрактный класс служит некой "болванкой" для шилдов. В твоем примере MDObject = TObject | |||
| 3
    
        Кирпич 12.11.14✎ 10:45 | 
        а почему мы решили что создавать экземпляры абстрактных классов запрещено?     | |||
| 4
    
        Looser-1c 12.11.14✎ 10:46 | 
        (3) По определению абстрактного класса....     | |||
| 5
    
        Кирпич 12.11.14✎ 10:46 | 
        по идее, должно ругаться при обращении к абстрактному методу. добавь в класс метод. может заругается.     | |||
| 6
    
        18_plus 12.11.14✎ 10:48 | 
        гуглозабаненные все
 "В одних языках создавать экземпляры абстрактных классов запрещено, в других это допускается (например, ObjectPascal(Delphi)), но обращение к абстрактному методу объекта этого класса в процессе выполнения программы приведёт к ошибке." | |||
| 7
    
        Кирпич 12.11.14✎ 10:48 | 
        (4) ну смотря кто их придумывал. в одних языках так, в других по другому.     | |||
| 8
    
        vde69 12.11.14✎ 10:50 | 
        пример использования
 описываем абстракный класс TCustomMuClass со свойством P1 потом на его основании описываем 2 разных класса TMuClass1 и TMuClass2 в них переопределяем P1 каждый на свой... потом гдето (например в TList) хотим использовать поле заранее не зная какой класс, тогда там описываем items как объект TCustomMuClass а фактически помещаем туда то что надо из своих двух классов. То есть используем типизированый указатель на родителя.... | |||
| 9
    
        Кирпич 12.11.14✎ 10:52 | 
        (8) от у тебя в голове дым. я балдею. :)))     | |||
| 10
    
        Ненавижу 1С гуру 12.11.14✎ 10:55 | 
        (8) тут и интерфейс можно     | |||
| 11
    
        Looser-1c 12.11.14✎ 10:56 | 
        (10) А в дельфи он есть?     | |||
| 12
    
        Кирпич 12.11.14✎ 10:58 | 
        (11) есть, но по уродски     | |||
| 13
    
        Кирпич 12.11.14✎ 10:59 | 
        +(12) мож правда уже переделали. они же каждые полгода новые версии шлёпают     | |||
| 14
    
        Ненавижу 1С гуру 12.11.14✎ 11:07 | 
        нашел
 Note: Delphi allows instantiating a class declared abstract, for backward compatibility, but this feature should not be used anymore ладно, хотя я не помню про такую директиву класса в ранних версиях, тогда такой вопрос: Как сделать так, чтобы нельзя было создать объект класса? | |||
| 15
    
        Кирпич 12.11.14✎ 11:09 | 
        (14) а зачем такой класс нужен?     | |||
| 16
    
        Ненавижу 1С гуру 12.11.14✎ 11:10 | 
        (15) чтобы клиенты библиотеки не могли создать объект базового класса, а только разрешенные дочерние     | |||
| 17
    
        Кирпич 12.11.14✎ 11:11 | 
        (16) ну пускай создают. тебе жалко что ли.     | |||
| 18
    
        Кирпич 12.11.14✎ 11:11 | 
        создаст. посмотрит - не работает и больше не будет создавать.     | |||
| 19
    
        Ненавижу 1С гуру 12.11.14✎ 11:13 | 
        (17) не логично     | |||
| 20
    
        Кирпич 12.11.14✎ 11:16 | 
        (19) вообще эта дурь годам к 30-35 должна пройти. так что лучше отложи пока решение этого важного вопроса.     | |||
| 21
    
        Ненавижу 1С гуру 12.11.14✎ 11:17 | 
        (20) шарп такое умеет, плюсы тоже, а тут на тебе - нет     | |||
| 22
    
        Кирпич 12.11.14✎ 11:30 | 
        (21) ну так и пиши на C#, если это для тебя так важно. какой дебил будет создавать экземпляр абстрактного класса, если это не нужно в принципе?
 Можно запретить садиться на горячую сковородку. Кому надо тот сядет, а большинству это в голову даже не придёт. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |