static abstract class?

  • Автор темы Автор темы HraKK
  • Дата начала Дата начала

HraKK

Мудак
Команда форума
static abstract class?

PHP:
<?php
abstract class a
{    
    static function b()
    {    
        print 1;        
    }
}
a::b();

Не пойму, абстрактный класс не должен как по мне давать с ним на прямую работать. Или я не прав?
 
Нельзя создавать экземпляры абстрактных классов.
 
ИМХО для статических методов логично исключение, ведь их нельзя затем перегрузить
 
А статические методы вызываются без создания экземпляров класса.
 
PHP:
<?php 
abstract class a 
{     
    abstract static function b() 
    {     
        print 1;         
    } 
} 
a::b();
Уже не выполнится)
 
PHP:
<?php
abstract class a
{    
    static function b()
    {    
        print 1;        
    }
}

class aa extends a
{    
    static function b()
    {    
        print 2;        
    }
}

a::b();
aa::b();
$aa = new aa();
$aa->b();
Выполнится, перегружать можно
 
Что мешает abstract добавить?

-~{}~ 18.08.08 03:13:

Автор оригинала: HraKK
Не пойму, абстрактный класс не должен как по мне давать с ним на прямую работать. Или я не прав?
Абстрактный класс не дает его экземпляры создавать. А static методы относятся ко всему классу, а не к какому-то объекту, так что все логично.
 
Все по мануалу:

Static Keyword
Declaring class members or methods as static makes them accessible without needing an instantiation of the class. A member declared as static can not be accessed with an instantiated class object (though a static method can).
 
Я знаю что по мануалу, но все же как по мне абстракция не должна быть законченной.
 
Сверху