2015-12-07 2 views
2

В названии говорится все. У меня есть класс с множеством переменных и множеством методов.Можно ли расширить класс без расширения методов этого класса?

class bootstrap_class { 
public 
//-----Counters--------- 
$iColumn_count, 
$iLink_count, 
$iDia_count, 
$iTab_count, 
$iPadding, 
$iColumns_per_page, 

//-----Strings--------- 
$sCentered, 
$sClass, 
etc; 

public function a() { 
    //do something 
} 

public function b() { 
    //do something 
} 
} 

Я пытаюсь расширить этот класс, чтобы создать класс без всех методов. Затем я хочу сохранить этот новый объект класса в переменную массива родительского класса.

Можно ли расширить класс без расширения функций этого класса?

+0

PHP классы соответствуют базовому LSP и подтип полиморфизму (это означает, что подтип «может сделать так же, как много, и обычно более», чем родители). В этом случае, вероятно, не рекомендуется «расширять» класс. – user2864740

+0

Частные методы/параметры недоступны в дочерних классах, в то время как защищенные или общедоступные .. Вам не нужно повторно вводить их в дочерние элементы, они уже существуют, когда вы расширяете родителя. – Svetoslav

ответ

3

Это невозможно так, как вы хотите. Но это единственный способ сделать это.

Все, что вам нужно сделать, это изменить видимость методов на private от public в родительском классе. Подробнее см. Ниже.

what are public private and protected in Object Oriented Programming

+0

Так что ответ не ... Я не могу сделать функции частными, мне нужно, чтобы они были общедоступными! – Abayob

+0

@ user2864740 Я имею в виду make методы private в родительском классе. И вы правы, вероятно, общественность по какой-то причине, но это единственный способ. – mega6382

+1

Ну, я буду проклят. PHP неожиданно выигрывает снова. Метод, определенный как «частный» в подклассе (когда он является «публичным» в суперклассе) будет вызывать ошибку при доступе. Я все еще не рекомендую расширять класс, если методы должны быть удалены, но ... – user2864740

Смежные вопросы