static abstract class?

HraKK

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

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

Dl

Новичок
Нельзя создавать экземпляры абстрактных классов.
 

AmdY

Пью пиво
Команда форума
ИМХО для статических методов логично исключение, ведь их нельзя затем перегрузить
 

Dl

Новичок
А статические методы вызываются без создания экземпляров класса.
 

Anarki

Новичок
PHP:
<?php 
abstract class a 
{     
    abstract static function b() 
    {     
        print 1;         
    } 
} 
a::b();
Уже не выполнится)
 

Dl

Новичок
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();
Выполнится, перегружать можно
 

Anarki

Новичок
Что мешает abstract добавить?

-~{}~ 18.08.08 03:13:

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

флоппик

promotor fidei
Команда форума
Партнер клуба
Все по мануалу:

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).
 

HraKK

Мудак
Команда форума
Я знаю что по мануалу, но все же как по мне абстракция не должна быть законченной.
 
Сверху